最好的方法是定义一个自定义表单集,使用一种干净的方法来验证至少存在一个发票订单。
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 = InvoiceOrderInlineFormsetclass InvoiceAdmin(admin.ModelAdmin): inlines = [InvoiceOrderInline]


