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的一部分,即使没有实际节电...但我有两个内联。
那么如何找到最顶端的保存方法,所以我可以在所有模型被验证并保存到数据库后调用我的聚合函数?