Django决定在我提交表单时抛出错误。该表格是一个modelformset,我完全没有更改默认值,只需单击提交按钮。 Django抱怨唯一的空形式需要有一个值,当我将其更改为required = False时:
forms.CharField(max_length = 40, required = False)
它不再抱怨。这是我的表格:
class RateForm(ModelForm):
costcode = forms.CharField(max_length = 40, required = False)
class Meta:
model = Rate
fields = ['costcode', 'rate', 'UOM', ]
class BaseRateFormSet(BaseModelFormSet):
def clean(self):
''' No custom cleaning at this point.'''
cd = super(BaseRateFormSet, self).clean()
要查看发生了什么,我编写了自定义清理,并在其后添加assert False时看到cd为None。
视图:
rate_formset = RateFormSet(request.POST if any(request.POST) else None,
prefix = user.short_name,
form_kwargs = the_form_kwargs,
**user_form_kwargs)
实际上,应该输入字段costcode,但Django应该意识到用户不希望提交任何其他表单,因此不会产生错误。如何让Django不要在空表格上抛出错误?
答案 0 :(得分:0)
您可以使用try and除外...
Try:
rate_formset = RateFormSet(request.POST if any(request.POST) else None,
prefix = user.short_name,
form_kwargs = the_form_kwargs,
**user_form_kwargs)
Except:
....
(显示您的所有观点,我可以提供更多帮助...)