Django inline_formset-form.empty_permitted = False不起作用 [英] django inline_formset - form.empty_permitted = False doesn't work
本文介绍了Django inline_formset-form.empty_permitted = False不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个模型-Invoice和InvoiceItem.
I have two models - Invoice and 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中,我具有以下代码集代码.
Inside my CreateViw, I have the following code for the formset.
ItemInlineFormSet = inlineformset_factory(Invoice,
InvoiceItem, form=InvoiceItemForm, extra=1,
can_delete=False,validate_min=True, min_num=1,
formset=InvoiceItemFormSet)
但是,当我按下提交"按钮时,即使该表单集的所有(两个)表单都为空,也会提交父表单.
However, when I press the Submit button, even if all (two) forms of the formset are empty, the parent form gets submitted.
我在这里想念什么?
谢谢.
推荐答案
而不是使用
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()
to the formset and the following to the form_valid() of the CreateView
if item_formset.is_valid() == False:
return self.render_to_response(self.get_context_data(form=form,item_formset=item_formset ))
这篇关于Django inline_formset-form.empty_permitted = False不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文