Django ModelFormset错误的空表单字段

时间:2019-09-07 00:04:10

标签: django django-forms django-views

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不要在空表格上抛出错误?

1 个答案:

答案 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:
     ....

(显示您的所有观点,我可以提供更多帮助...)