django admin hook 运行 来自 super 的代码

django admin hook run code from super

我想 运行 用户在管理员中保存对模型的更改后的一些代码。要连接到这个,我知道扩展 save_model 函数。我怎样才能让它执行 super 中的所有代码,然后 运行 我的代码?

class ModelNameAdmin(admin.ModelAdmin):
    list_display = ('demo_field_1', 'demo_field_2')

    def save_model(self, request, obj, form, change):
        # I want to run all the code from super here
        # My code will follow...

当我覆盖 save_model 函数时,它只执行我的代码,不执行任何形式的 super

ModelAdmin、class 调用 super() 并不复杂,这与您通常在 Python 中所做的一样。

class ModelNameAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        super(ModelnameAdmin, self).save_model(request, obj, form, change)
        # Your code will follow ...

但是,ModelAdmin.save_model 方法唯一做的就是保存对象,因此您可能更愿意这样做:

class ModelNameAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.save()
        # Your code will follow ...

这就是 docssave_model 示例中使用的方法。