如何重写并调用django admin中的response_change或response_add的super

3 投票
3 回答
5396 浏览
提问于 2025-04-15 15:02

我想在一个ModelAdmin中重写response_change这个方法,以便更新父窗口中的一个字段。在完成更新后,我希望能把控制权交还给重写的response_change

我尝试过的一个简化版本是:

class MyModelAdmin(admin.ModelAdmin):
    def response_change(self, request, obj):
        // perfom my actions
        super(MyModelAdmin, self).response_change(request, obj)

但是我遇到了一个AttributeError错误,提示'NoneType'对象没有'has_header'这个属性。可能是我没有正确使用super...?

3 个回答

0

你需要像下面这样返回 "super().response_change(request, obj)"

class MyModelAdmin(admin.ModelAdmin):
    def response_change(self, request, obj):
        // perfom my actions
        return super().response_change(request, obj) # Here
0

你能不能提供一个更详细的错误追踪信息?

错误发生在哪里?你有创建响应吗?如果没有的话,get_response 可能会默默返回 None,这样就会导致错误。

16

你需要把调用 super() 的结果返回出来。

return super(MyModelAdmin, self).response_change(request, obj)

撰写回答