出现这个问题通常是因为自定义的admin action在执行完跳转到另一个页面之后,没有结束当前view,而是又执行了一次admin change_view。解决方法是在自定义的action中手动返回HttpResponseRedirect对象,并将它赋值给response变量,然后将response返回。示例代码如下:
from django.http import HttpResponseRedirect
class MyModelAdmin(admin.ModelAdmin):
def my_action(self, request, queryset):
# 执行自定义action
# 跳转到另一个页面
response = HttpResponseRedirect('/another_page/')
return response
这样就能避免admin change_view被调用两次的问题。