1. ホーム
  2. python

django.forms で TextField が見つかりません。

2023-12-30 23:40:13

質問

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' オブジェクトには '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          

何か思い当たることは?

どのように解決するのですか?

CharField は、あなたが探しているものであるかもしれません。

EDITです。 明確にするために、ドキュメントでは TextField をモデルフィールドの型として挙げています。フォームフィールドとして使用することはできません。また テーブル は、OPが指摘したように TextField として表現されていることがわかります。 CharField (である(ただし widget=forms.Textarea ) を、対応する ModelForm に追加します。というフォームフィールドは存在しないのでしょうか? Textarea をデフォルトのウィジェットとして持つフォームフィールドは存在しないことになります。

Django がこの選択をした理由を推測すると、保存されるデータの種類やバリデーションなどではなく、使用するウィジェットだけが異なる 2 つのフィールドを持つことは、Django の人々にとって無駄であると考えられ、そのためウィジェットを手動で変更しなければならないからでしょう。