django admin hook从super运行代码

时间:2015-07-09 20:19:33

标签: python django python-2.7 inheritance django-admin

我希望在用户将更改保存到管理员模型后运行一些代码。为了解决这个问题,我知道扩展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

1 个答案:

答案 0 :(得分:2)

super()类调用ModelAdmin并不复杂,它与您在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 ...

这是save_model {{1}}中示例中使用的方法。