使用ModelAdmin的mixin时处理重定向

2024-10-01 00:15:56 发布

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

我有一些ModelAdmin类,它们的ModelForm基于同一个ModelForm类

class RepairAdmin(RedirectMixin, admin.ModelAdmin):
   pass

class PurchaseAdmin(RedirectMixin, admin.ModelAdmin):
   pass

我需要为一些redirect_方法定义特定的行为,因此我编写了RedirectMixin

class RedirectMixin(object):
    def response_add(self, request, obj, post_url_continue=None):
        if request.POST.get('_continue'):
            return super(self.__class__, self).response_add(request, obj)
        return HttpResponseRedirect(reverse('admin:requests_request_changelist'))

问题是我不能将self.__class__super()一起使用-我得到“超过最大递归”异常。但是我不能指定类本身,我不知道它是PurchaseAdmin还是RepairAdmin


Tags: selfaddobjreturnadminresponserequestpass
1条回答
网友
1楼 · 发布于 2024-10-01 00:15:56

但关键是,你不需要知道。超级调用必须始终使用您在其中定义它的类。Python使用MRO解析引用

class RedirectMixin(object)
    def response_add(...):
        ...
        return super(RedirectMixin, self).response_add(...)

相关问题 更多 >