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

回到顶部