我有一些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。
答案 0 :(得分:1)
但这就是重点,你不需要知道。超级调用必须始终使用您定义的类.Python使用MRO解析引用。
class RedirectMixin(object)
def response_add(...):
...
return super(RedirectMixin, self).response_add(...)