Django简单形式"对象没有属性' is_hidden'"

时间:2016-03-08 04:58:04

标签: django django-forms

我试图渲染一个没有数据库模型的简单表单,但我收到错误。以下是代码:

from django import forms
from django.utils.safestring import mark_safe
class ContactForm(forms.Form):
    category_options = (
        ('select category', '--Select Category--'),
        ('fire safety', 'Fire Safety'),
        ('batteries/solar panels', 'Batteries/Solar Panels'),
        ( 'cctv systems','CCTV Systems')
    )
    category = forms.ChoiceField(label="Select a Category", choices=category_options, required=True)
    full_name = forms.CharField(required=False)
    email = forms.EmailField()
    phone = forms.CharField(widget=forms.IntegerField)
    message = forms.CharField(widget=forms.Textarea(attrs={'cols': 10, 'rows': 10}))

    def clean_email(self):
        email = self.cleaned_data.get('email')

        return email

我没有把电话领域弄好。我需要为电话号码添加验证,并且无法找出为IntegerField使用widget的正确方法。

我需要找到添加电话字段的准确方法。

我收到错误:

AttributeError at /contact/
'IntegerField' object has no attribute 'is_hidden'

当我使用

时,我得到以下结果
phone = forms.CharField(widget=forms.NumberInput)

enter image description here

我从不同字段的python代码生成的html如下:

<p> 
<label for="id_email">Email:</label>
<input id="id_email" name="email" type="email">
</p>

<p> 
<label for="id_phone">Phone:</label>
<input id="id_phone" name="phone" type="number">
</p>

上面的两个字段都是用python代码生成的,但是email字段正在应用模板css。但是&#34;电话&#34;字段不呈现css。

请告知。

2 个答案:

答案 0 :(得分:3)

forms.IntegerField不是窗口小部件,而是窗体上的字段类型。

您需要的是forms.NumberInput

phone = forms.CharField(widget=forms.NumberInput)  

答案 1 :(得分:0)

您可以使用

phone = forms.CharField(widget=forms.TextInput(
      attrs={
          'type' : 'number',
          'class' : 'your_class'
      }))