Django 表单可选字段仍然需要错误
Django form optional field still required error
我的模型中有以下字段:
field1 = models.CharField(max_length=63, null=True, blank=True)
field2 = models.CharField(max_length=255, null=True, blank=True)
在我的表格中,它扩展了 ModelForm
,我添加了:
field1 = forms.CharField(required=False)
field2 = forms.CharField(required=False)
class Meta:
model = TestForm
fields = [
'another_field', 'field1', 'field2'
]
但是如果我不填写 field1
和 field2
,我会得到以下错误:
TestForm with errors: <ul class="errorlist"><li>__all__<ul class="errorlist nonfield"><li>You must specify either a field1 or a field2</li></ul></li></ul>
AFAIK 我什至不需要设置 required=False
因为模型已经将 null 和 blank 设置为 true,所以我错过了什么?提前致谢。
我非常担心 form
class,但事实证明项目中有人已经覆盖了模型本身的 clean
方法:
def clean(self) -> None:
if not (self.field1 or self.field2):
raise ValidationError("You must specify either a field1 or a field2")
return super().clean()
通过删除上面的行,代码现在可以工作了!
尝试像这样编辑您的表单:
class My_Form(forms.ModelForm):
class Meta:
model = TestForm
fields = ('another_field', 'field1' , 'field2')
def __init__(self, *args, **kwargs):
super(My_Form, self).__init__(*args, **kwargs)
self.fields['field1'].required = False
self.fields['field2'].required = False
我的模型中有以下字段:
field1 = models.CharField(max_length=63, null=True, blank=True)
field2 = models.CharField(max_length=255, null=True, blank=True)
在我的表格中,它扩展了 ModelForm
,我添加了:
field1 = forms.CharField(required=False)
field2 = forms.CharField(required=False)
class Meta:
model = TestForm
fields = [
'another_field', 'field1', 'field2'
]
但是如果我不填写 field1
和 field2
,我会得到以下错误:
TestForm with errors: <ul class="errorlist"><li>__all__<ul class="errorlist nonfield"><li>You must specify either a field1 or a field2</li></ul></li></ul>
AFAIK 我什至不需要设置 required=False
因为模型已经将 null 和 blank 设置为 true,所以我错过了什么?提前致谢。
我非常担心 form
class,但事实证明项目中有人已经覆盖了模型本身的 clean
方法:
def clean(self) -> None:
if not (self.field1 or self.field2):
raise ValidationError("You must specify either a field1 or a field2")
return super().clean()
通过删除上面的行,代码现在可以工作了!
尝试像这样编辑您的表单:
class My_Form(forms.ModelForm):
class Meta:
model = TestForm
fields = ('another_field', 'field1' , 'field2')
def __init__(self, *args, **kwargs):
super(My_Form, self).__init__(*args, **kwargs)
self.fields['field1'].required = False
self.fields['field2'].required = False