django inline_formset - form.empty_permitted = False 不起作用
django inline_formset - form.empty_permitted = False doesn't work
我有两个模型 - 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 中,我有以下表单集代码。
ItemInlineFormSet = inlineformset_factory(Invoice,
InvoiceItem, form=InvoiceItemForm, extra=1,
can_delete=False,validate_min=True, min_num=1,
formset=InvoiceItemFormSet)
但是,当我按下提交按钮时,即使表单集的所有(两个)表单都是空的,父表单也会被提交。
我在这里缺少什么?
谢谢。
而不是使用
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.')
到表单集,然后到 CreateView
的 form_valid()
if item_formset.is_valid() == False:
return self.render_to_response(self.get_context_data(form=form,item_formset=item_formset ))
我有两个模型 - 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 中,我有以下表单集代码。
ItemInlineFormSet = inlineformset_factory(Invoice,
InvoiceItem, form=InvoiceItemForm, extra=1,
can_delete=False,validate_min=True, min_num=1,
formset=InvoiceItemFormSet)
但是,当我按下提交按钮时,即使表单集的所有(两个)表单都是空的,父表单也会被提交。
我在这里缺少什么?
谢谢。
而不是使用
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.')
到表单集,然后到 CreateView
的 form_valid()if item_formset.is_valid() == False:
return self.render_to_response(self.get_context_data(form=form,item_formset=item_formset ))