django.forms 中缺少 TextField
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: 'module' object has no attribute 'TextField'”。看起来其他地方都没问题,就是缺少了一个叫做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
有没有人知道这是怎么回事?
5 个回答
3
我想给像我这样的初学者补充一个更好的例子。正如上面提到的,ModelForm里没有TextFile这个选项。如果你需要用到它,在提问者的情况下,应该这样写:
first_name = forms.CharField(
widget=forms.TextInput(attrs={'placeholder': 'first name'}),
label=_(u'First name'),
required=False)
如果你需要一个文本区域来填写描述或评论,那你可以使用Textarea这个小工具:
description = forms.CharField(
widget=forms.Textarea(attrs={'placeholder': 'Please enter the description'}))
98
如果你想要一个文本区域,可以使用 forms.CharField 配合 forms.TextArea 这个工具。
class ContactForm(forms.Form):
message = forms.CharField(widget=forms.Textarea)