Django: Сделать определенные поля в ModelForm required = False
Как сделать определенные поля в ModelForm required = False?
Если у меня есть:
class ThatForm(ModelForm):
class Meta:
widgets = {"text": Textarea(required=False)}
Или, если у меня есть:
class ThatForm(ModelForm):
text = Textarea(required=False)
Django возвращает:
__init__() got an unexpected keyword argument 'required'
Ответы
Ответ 1
после комментариев. Вероятно, да:
class ThatForm(ModelForm):
def __init__(self, *args, **kwargs):
# first call parent constructor
super(ThatForm, self).__init__(*args, **kwargs)
# there a `fields` property now
self.fields['desired_field_name'].required = False
Ответ 2
Вы должны добавить blank=True
к соответствующей модели
В документации написано
Если поле модели имеет пустое value = True, то для поля формы требуется значение False. В противном случае требуется = True.
Также смотрите документацию для самого бланка.
Ответ 3
Когда нам нужно установить обязательную опцию для нескольких полей, мы можем:
class ThatForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.Meta.required:
self.fields[field].required = True
class Meta:
model = User
fields = (
'email',
'first_name',
'last_name',
'address',
'postcode',
'city',
'state',
'country',
'company',
'tax_id',
'website',
'service_notifications',
)
required = (
'email',
'first_name',
'last_name',
'address',
'postcode',
'city',
'country',
)
Ответ 4
может подойти следующее
class ThatForm(ModelForm):
text = forms.CharField(required=False, widget=forms.Textarea)
Ответ 5
Вы можете попробовать следующее:
class ThatForm(ModelForm):
class Meta:
requireds =
{
'text':False,
}
требуется, чтобы под Meta.