表单字段未显示在模板中。

huangapple go评论105阅读模式
英文:

Form field not showing in tempate

问题

在定义表单字段后,当我尝试在Django模板中使用{{form.Date_Joined}}访问时

不起作用

class UserAdd(forms.ModelForm):
        
    class Meta:
        model=CompanyUsers
        fields= '__all__'
        exclude=['usrPsswd','usrId','usrCmpnyId','lstLogin','is_active','usrDOJ']
        widgets={

                
                'Date_Joined':forms.DateInput(attrs={'type':'date'}),
            }
        

我声明的小部件不显示

    <div class="order">
        <!--<div class="head" >-->
             <h4> ADD COMPANY</h4>
        <!--</div> -->
         <table id="table-datas">
            <form method="POST" action="">
                {% csrf_token %}
                <tbody>
           <tr><td>Username</td><br><td>{{ form.usrNme}}</td></tr>
           <tr><td>First Name </td><br><td>{{ form.usrFNme}}</td></tr>
           <tr><td>Last Name </td><br><td>{{ form.usrLNme}}</td></tr>
           <tr><td>Date of join</td><br><td>{{form.Date_Joined}}</td></tr>
           <tr><td>Department</td><br><td>{{ form.usrDpt}}</td></tr>
           <tr><td>Email</td><br><td>{{ form.usrMail}}</td></tr>
                    
           <tr><td><button type="submit">Register</button></td></tr>
           </form>```


所以"Date Joined"字段什么都不显示。

<details>
<summary>英文:</summary>

after defining form field when I try to access in django template using {{form.Date_Joined}} 


not working


class UserAdd(forms.ModelForm):

class Meta:
    model=CompanyUsers
    fields= &#39;__all__&#39;
    exclude=[&#39;usrPsswd&#39;,&#39;usrId&#39;,&#39;usrCmpnyId&#39;,&#39;lstLogin&#39;,&#39;is_active&#39;,&#39;usrDOJ&#39;]
    widgets={

            
            &#39;Date_Joined&#39;:forms.DateInput(attrs={&#39;type&#39;:&#39;date&#39;}),
        }
The widget i&#39;ve declare not showing 
```&lt;div class=&quot;table-data&quot;&gt;
    &lt;div class=&quot;order&quot;&gt;
        &lt;!-- &lt;div class=&quot;head&quot; &gt; --&gt;
             &lt;h4&gt; ADD COMPANY&lt;/h4&gt;
        &lt;!-- &lt;/div&gt; --&gt;
         &lt;table id=&quot;table-datas&quot;&gt;
            &lt;form method=&quot;POST&quot; action=&quot;&quot;&gt;
                {% csrf_token %}
                &lt;tbody&gt;
           &lt;tr&gt;&lt;td&gt;Username&lt;/td&gt;&lt;br&gt;&lt;td&gt;{{ form.usrNme}}&lt;/td&gt;&lt;/tr&gt;
           &lt;tr&gt;&lt;td&gt;First Name &lt;/td&gt;&lt;br&gt;&lt;td&gt;{{ form.usrFNme}}&lt;/td&gt;&lt;/tr&gt;
           &lt;tr&gt;&lt;td&gt;Last Name &lt;/td&gt;&lt;br&gt;&lt;td&gt;{{ form.usrLNme}}&lt;/td&gt;&lt;/tr&gt;
           &lt;tr&gt;&lt;td&gt;Date of join&lt;/td&gt;&lt;br&gt;&lt;td&gt;{{form.Date_Joined}}&lt;/td&gt;&lt;/tr&gt;
           &lt;tr&gt;&lt;td&gt;Department&lt;/td&gt;&lt;br&gt;&lt;td&gt;{{ form.usrDpt}}&lt;/td&gt;&lt;/tr&gt;
           &lt;tr&gt;&lt;td&gt;Email&lt;/td&gt;&lt;br&gt;&lt;td&gt;{{ form.usrMail}}&lt;/td&gt;&lt;/tr&gt;
                    
           &lt;tr&gt;&lt;td&gt;&lt;button type=&quot;submit&quot;&gt;Register&lt;/button&gt;&lt;/td&gt;&lt;/tr&gt;
           &lt;/form&gt;```


so the Date Joined field shows nothing



</details>


# 答案1
**得分**: 1

"attrs"的"type"未被考虑,这源自小部件的"input_type",因此您可以创建自定义小部件:

```python
class MyDateInput(forms.DateInput):
    input_type = 'date'

然后将其用作小部件插入:

class UserAdd(forms.ModelForm):
    class Meta:
        model = CompanyUsers
        fields = '__all__'
        exclude = [
            'usrPsswd',
            'usrId',
            'usrCmpnyId',
            'lstLogin',
            'is_active',
            'usrDOJ',
        ]
        widgets = {
            'Date_Joined': MyDateInput,
        }
英文:

The type of the attrs is not taken into account, this originates from the input_type of the widget, you thus create a custom widget:

<pre><code>class MyDateInput(forms.DateInput):
<b>input_type = 'date'</b></code></pre>

then we plug this in as widget:

<pre><code>class UserAdd(forms.ModelForm):
class Meta:
model = CompanyUsers
fields = 'all'
exclude = [
'usrPsswd',
'usrId',
'usrCmpnyId',
'lstLogin',
'is_active',
'usrDOJ',
]
widgets = {
'Date_Joined': <b>MyDateInput</b>,
}</code></pre>

答案2

得分: 1

我认为你在表单的**Date_Joined**字段的拼写上犯了一个错误,因为Python是区分大小写的。

将代码更改为:

widgets={
  'date_Joined':forms.DateInput(attrs={'type':'date'}),
}

而不是:

widgets={
  'Date_Joined':forms.DateInput(attrs={'type':'date'}),
}
英文:

I think you make a mistake with the typo field of the form Date_Joined because python is case sensitive.

Type

widgets={
  &#39;date_Joined&#39;:forms.DateInput(attrs={&#39;type&#39;:&#39;date&#39;}),
}

Instead of

widgets={
  &#39;Date_Joined&#39;:forms.DateInput(attrs={&#39;type&#39;:&#39;date&#39;}),
}

huangapple
  • 本文由 发表于 2023年7月13日 18:36:19
  • 转载请务必保留本文链接:https://go.coder-hub.com/76678414.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定