通过点击管理界面中的 saveasnew 按钮保存对象后,我想重定向到另一个网址:
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”,但它再次将我重定向到列表对象...我做错了什么?
答案 0 :(得分:2)
save_model
返回无。并且它的结果不会在任何地方使用。因此返回的内容无关紧要(redirect(...)
或None
)
我认为
def response_add(self, request, new_object):
pass
和
def response_change(self, request, new_object):
pass
是您正在寻找的。 p>
如果我们查看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.
"""