2

通过单击管理界面中的saveasnew按钮保存对象后,我想重定向到另一个 url:

admin.py
class AirplanesAdmin(admin.ModelAdmin):

def save_model(self, request, obj, form, change):
    obj.save()
    if "_saveasnew" in request.POST:
        self.message_user(request, 'YAY!!!')
        return HttpResponseRedirect(reverse('admin:routes_airplanes_change',
                                    args=(obj.pk,),
                                    current_app=self.admin_site.name))

显示了“YAY”消息...但是 django 将我重定向到 pbject 页面列表中,而不是新的对象页面...即使这段代码也不能工作:

admin.py
class AirplanesAdmin(admin.ModelAdmin):

def save_model(self, request, obj, form, change):
    obj.save()
    if "_saveasnew" in request.POST:
        self.message_user(request, 'YAY!!!')
        redirect('http://example.com')

我看到“YAY”,但它再次将我重定向到列表对象......我做错了什么?

4

1 回答 1

2

save_model返回无。它的结果不在任何地方使用。所以不管返回什么(redirect(...)None

我认为

def response_add(self, request, new_object):
    pass

def response_change(self, request, new_object):
    pass

是你正在寻找的。

如果我们查看 django 源代码,我们将看到以下内容:

def response_change(self, request, obj):
    """
    Determines the HttpResponse for the change_view stage.
    """

def response_add(self, request, obj, post_url_continue=None):
    """
    Determines the HttpResponse for the add_view stage.
    """
于 2013-11-04T12:27:53.900 回答