在我的模型,我下面Django的表單集驗證:自動修復校驗錯誤
--- 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()
那麼,相應的管理(A管理視圖有一個內嵌到鏈路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):
...
我們自定義表單驗證,沒什麼難度:剛剛覆蓋表單對象的「乾淨」的方法。如果你想在formset中使用許多不同的表單,我想你只需在formset的「init」方法中手動更改一些表單。但是當我們清理表單集時,編程式驗證所有表單,而且只在某些條件下執行。
在我的情況下:如果所有的訂單(內聯排除行)都是空的,如何自動設置「訂單」字段(在管理視圖的內聯行)和自動增量?