IT박스

django.forms에 TextField가 없습니다.

itboxs 2021. 1. 10. 16:57
반응형

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          

어떤 생각?


CharField 당신이 찾고있는 것일 수 있습니다.

편집 : 명확히하기 위해 문서 TextField는 모델 필드 유형으로 언급 합니다. 양식 필드로 사용할 수 없습니다. 테이블 방공호 지적한는 것을 나타낸다 TextField모델에서는로 표현된다 CharField(함께 widget=forms.Textarea대응 ModelForm에서). 그러면 Textarea기본 위젯이있는 양식 필드가 없다고 상상할 수 있습니다.

Django가 왜 이런 선택을했는지 짐작한다면, 저장되는 데이터 유형, 유효성 검사 등이 아니라 사용하는 위젯에서만 다른 두 필드를 갖는 것은 Django의 사람들에게 쓸모없는 것으로 간주 될 수 있습니다. 따라서 위젯을 수동으로 변경해야합니다.


텍스트 영역을 원하면 forms.TextArea 위젯과 함께 forms.CharField를 사용할 수 있습니다.

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 위젯을 사용할 수 있습니다.

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

forms.TextField가 존재하지 않습니다. 참조하는 문서를 확인하세요. 모델 전용입니다.

실제 django 소스 django / forms / fields.py를 살펴보면이를 스스로 증명할 수 있습니다.

You must use CharField with widget=forms.TextArea as you say in your comments.

ReferenceURL : https://stackoverflow.com/questions/7302889/textfield-missing-in-django-forms

반응형