2
我有一對夫婦行內的管理表單顯示M2M領域,像這樣:Django管理員後保存方法 - 怎麼辦?
class ArticleAdmin(admin.ModelAdmin):
form = ArticleCustomAdminForm
inlines = (SpecificGemInline, SuiteInline,)
基類看起來就像這樣:
型號有一個特殊的領域article_code
那應該彙總來自兩個內聯表示的m2m字段的一些數據,所以我寫了一個函數create_code(instance)
,它通過直接訪問模型實例字段來實現,如下所示:
def create_code(instance):
article_code_part1 = SpecificGem.objects.filter(article=instance)
article_code_part2 = instance.suite_set.all()
instance.article_code = #do something with both parts
問題是,當我通過重寫ModelAdmin的save_model()
或模型的save()
函數調用此函數時,以下實例m2m字段會生成過期結果。甚至低於智障例如不會幫助:
class ArticleAdmin(admin.ModelAdmin):
#...
def save_model(self, request, obj, form, change):
obj.save()
create_code(obj)
obj.save()
當我進入InlineFormset的clean()
方法,我可以訪問它的形式數據,以便我能想出article_code的一部分,即使沒有實際節電...但我有兩個內聯。
那麼如何找到最頂端的保存方法,所以我可以在所有模型被驗證並保存到數據庫後調用我的聚合函數?