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 ...
这就是 docs 中 save_model
示例中使用的方法。
我想 运行 用户在管理员中保存对模型的更改后的一些代码。要连接到这个,我知道扩展 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 ...
这就是 docs 中 save_model
示例中使用的方法。