【问题标题】:django admin hook run code from superdjango admin hook 从 super 运行代码
【发布时间】:2015-07-09 20:19:33
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    ModelAdmin 类调用 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 ...
    

    这就是docs for save_model 的示例中使用的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 2019-01-23
      • 2016-09-18
      相关资源
      最近更新 更多