TextField在django.forms中丢失

from django import forms class UserForm(forms.ModelForm): first_name = forms.TextField(label=_(u'First name'), required=False) last_name = forms.TextField(label=_(u'Last name')) 

它给了我一个“ AttributeError:”模块“对象没有属性”TextField“ 。似乎一切都好,除了缺less的TextField:

 ipdb> forms <module 'django.forms' from '/usr/local/lib/python2.7/dist-packages/django/forms/__init__.pyc'> ipdb> forms. forms.BaseForm forms.EmailField forms.MultiWidget forms.TypedChoiceField forms.BaseModelForm forms.Field forms.MultipleChoiceField forms.TypedMultipleChoiceField forms.BooleanField forms.FileField forms.MultipleHiddenInput forms.URLField forms.CharField forms.FileInput forms.NullBooleanField forms.ValidationError forms.CheckboxInput forms.FilePathField forms.NullBooleanSelect forms.Widget forms.CheckboxSelectMultiple forms.FloatField forms.PasswordInput forms.fields forms.ChoiceField forms.Form forms.RadioSelect forms.fields_for_model forms.ClearableFileInput forms.HiddenInput forms.RegexField forms.forms forms.ComboField forms.IPAddressField forms.Select forms.formsets forms.DEFAULT_DATETIME_INPUT_FORMATS forms.ImageField forms.SelectMultiple forms.model_to_dict forms.DEFAULT_DATE_INPUT_FORMATS forms.IntegerField forms.SlugField forms.models forms.DEFAULT_TIME_INPUT_FORMATS forms.Media forms.SplitDateTimeField forms.save_instance forms.DateField forms.MediaDefiningClass forms.SplitDateTimeWidget forms.util forms.DateInput forms.ModelChoiceField forms.TextInput forms.widgets forms.DateTimeField forms.ModelForm forms.Textarea forms.DateTimeInput forms.ModelMultipleChoiceField forms.TimeField forms.DecimalField forms.MultiValueField forms.TimeInput 

任何想法?

CharField可能是你在找什么。

编辑:澄清,文档提到TextField作为模型字段types。 你不能使用它作为表单域。 OP指出的表格指示模型中的TextField在相应的ModelForm中表示为CharField (带有widget=forms.Textarea )。 那么,我想可以想象,没有将Textarea作为其默认小部件的表单域。

如果我想知道为什么Django做出这样的select,那么我认为有两个字段只在它们使用的小部件上有所不同,而不是存储,validation等types的数据可能被Django因此您必须手动更改小部件。

如果你想要一个textarea,你可以使用forms.CharField和forms.TextArea部件。

 class ContactForm(forms.Form): message = forms.CharField(widget=forms.Textarea) 

只是想为像我这样的初学者添加一个更好的例子,就像上面提到的那样,ModelForm没有TextFile,如果你需要使用它,对于OP的情况,应该是:

 first_name = forms.CharField( widget=forms.TextInput(attrs={'placeholder': 'first name'}), label=_(u'First name'), required=False) 

如果你需要一个textarea字段来描述或评论,那么你可以使用Textarea小部件:

 description = forms.CharField( widget=forms.Textarea(attrs={'placeholder': 'Please enter the description'})) 

forms.TextField不存在,请查看您引用的文档,它仅适用于模型。

您可以通过查看实际的django源代码django / forms / fields.py来certificate这一点。

你必须使用CharField和widget = forms.TextArea,就像你在评论中所说的那样。