Django中的内联表单验证
我想在管理员更改表单中强制使用整个内联表单集。因此,在当前情况下,当我在“发票”表单(在“管理员”中)中单击“保存”时,内联订单表单为空白。我想阻止人们创建没有关联订单的发票。
有人知道这样做的简单方法吗?
required=True
在此实例中,模型字段上的常规验证(如)似乎不起作用。
回答:
最好的方法是定义一个自定义表单集,使用一种干净的方法来验证至少存在一个发票订单。
class InvoiceOrderInlineFormset(forms.models.BaseInlineFormSet): def clean(self):
# get forms that actually have valid data
count = 0
for form in self.forms:
try:
if form.cleaned_data:
count += 1
except AttributeError:
# annoyingly, if a subform is invalid Django explicity raises
# an AttributeError for cleaned_data
pass
if count < 1:
raise forms.ValidationError('You must have at least one order')
class InvoiceOrderInline(admin.StackedInline):
formset = InvoiceOrderInlineFormset
class InvoiceAdmin(admin.ModelAdmin):
inlines = [InvoiceOrderInline]
以上是 Django中的内联表单验证 的全部内容, 来源链接: utcz.com/qa/415894.html