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



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

我需要在 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中。

我相信有一种更简单、更干净的方法可以做到这一点,但是如果您遇到困难,您可以通过为每个输入字段创建一个 id,然后在视图中使用您的逻辑创建/保存对象来做到这一点。看起来你有很多事情要检查,并不理想,但这是一种方法。

我对我的一个项目有一个棘手的验证方案,发现创建表单,然后在帖子视图中处理它更容易。您仍然可以向窗体添加错误消息,也可以从视图中执行所有这些操作。

最新更新