在我的模型中,我有以下内容
--- models.py ---
class A(models.Model):
my_Bs = models.ManyToManyField('B', through='AlinksB')
...
class B(models.Model):
...
class AlinksB(models.Model):
my_A = models.ForeignKey(A)
my_B = models.models.ForeignKey(B)
order = models.IntegerField()
相应的管理员也是如此(管理员视图有一个内联链接 B 实例,我准备了自定义此内联的表单集和表单所需的内容):
--- admin.py ---
class AlinksBInlineForm(forms.ModelForm):
class Meta:
model = AlinksB
class AlinksBInlineFormset(forms.models.BaseInlineFormSet): # there also is a BaseModelFormset
form = AlinksBInlineForm
class AlinksBInline(admin.TabularInline):
formset = AlinksBInlineFormset
model = AlinksB
class AAdmin(admin.ModelAdmin):
form = AForm
inlines = (AlinksBInline,)
...
class BAdmin(admin.ModelAdmin):
...
现在自定义表单验证,没什么难的:只需覆盖表单对象的“干净”方法。如果您想在表单集中使用许多不同的表单,我认为您只需在表单集的“ init ”方法中手动更改一些。但是,当我们清理表单集时,以编程方式验证所有表单怎么样,并且仅在某些条件下。
就我而言:如果所有订单(要删除排除的内联行)为空,如何自动设置“订单”字段(在管理视图的内联中)并自动增加?!