django formset-如果复选框不为真,不要提交单个表单?

时间:2018-07-06 12:54:51

标签: django forms

我有一个显示为表格的表单集,并且我不想验证没有选中特定复选框的任何表单。但是,提交表单集后,它们将得到验证。

我需要在clean_field()方法级别处理此问题吗?

如果是这样,我如何在此时停止表单,而不会使整个表单集无效?

class HILISForm(forms.ModelForm):


    summary = forms.CharField(
                widget=forms.Textarea(attrs={'rows':3, 'cols':70}),
                label='',
                required=False)


    class Meta:
        model = Report
        fields = ('reported', 'summary', )

    def clean_reported(self):

        reported = self.cleaned_data['hilis']

        if reported:
            return(hilis_reported)
        else:
            raise(forms.ValidationError('Not checked...'))

如果我“通过”而不是引发错误-那么此表格仍会显示在我不希望的cleaned_dict中。

1 个答案:

答案 0 :(得分:0)

我敢肯定有一种更容易,更干净的方法来执行此操作,但是如果遇到困难,可以通过为每个输入字段创建一个id,然后在视图中使用逻辑创建/保存对象来完成此操作代替。看起来您有很多事情需要检查,并不理想,但这是一种解决方法。

我对我的一个项目有一个棘手的验证方案,发现仅创建表单然后在发布后的视图中进行处理比较容易。您仍然可以将错误消息添加到表单中,也可以从视图中执行所有这些操作。