Django管理钩子运行代码

2024-10-03 23:27:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想运行一些代码后,一个用户已保存在管理模式的更改。为此,我知道要扩展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形式的代码。你知道吗


Tags: 函数代码用户fieldmodeladmindemosave
1条回答
网友
1楼 · 发布于 2024-10-03 23:27:38

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 ...

但是,^{}方法所做的唯一一件事就是保存对象,因此您可能更喜欢这样做:

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

这就是docs中的save_model示例中使用的方法。你知道吗

相关问题 更多 >