我有两个模型 - Invoice和InvoiceItem。
我有以下表格。
class InvoiceItemFormSet(forms.BaseInlineFormSet):
def __init__(self, *args, **kwargs):
super(InvoiceItemFormSet, self).__init__(*args, **kwargs)
for form in self.forms:
form.empty_permitted = False
def clean(self):
cleaned_data=super(InvoiceItemFormSet, self).clean()
print('inside form.clean')
在我的CreateViw中,我有以下代码用于formset。
ItemInlineFormSet = inlineformset_factory(Invoice,
InvoiceItem, form=InvoiceItemForm, extra=1,
can_delete=False,validate_min=True, min_num=1,
formset=InvoiceItemFormSet)
但是,当我按下“提交”按钮时,即使表格集的所有(两种)形式都为空,也会提交父表单。
我在这里缺少什么?
感谢。
答案 0 :(得分:0)
而不是使用
for form in self.forms:
form.empty_permitted = False
我添加了
def clean(self):
if self.has_changed() == False:
raise forms.ValidationError('Please add at least one item to the invoice.')
到formset和以下的CreateView的 form_valid()
if item_formset.is_valid() == False:
return self.render_to_response(self.get_context_data(form=form,item_formset=item_formset ))