如何在“保存”上将用户重定向到其他应用?
我有两个应用,分别说app1和app2。如果用户单击“保存在” app2,则应将其重定向到app1默认页面,而不是默认页面。
app1
app2
我不想做一个定制表格。
要在保存到管理员后更改重定向目标,你需要在类中重写response_add()(用于添加新实例)和response_change()(用于更改现有实例)ModelAdmin。
response_add()
response_change()
ModelAdmin
请参阅中的原始代码django.contrib.admin.options。
django.contrib.admin.options
而且,如果你希望人们在StackOverflow上继续为你提供帮助,则需要接受问题的答案。
快速示例可以使你更清楚地了解如何执行此操作(将在ModelAdmin类中):
from django.core.urlresolvers import reverse def response_add(self, request, obj, post_url_continue=None): """This makes the response after adding go to another apps changelist for some model""" return HttpResponseRedirect(reverse("admin:otherappname_modelname_changelist")) def response_change(self, request, obj, post_url_continue=None): """This makes the response go to the newly created model's change page without using reverse""" return HttpResponseRedirect("../%s" % obj.id])
要添加到@DanielRoseman的答案中,并且当用户选择“ 保存并继续”而不是“保存”按钮时,你不希望用户重定向,那么可以改用此解决方案。
def response_add(self, request, obj, post_url_continue="../%s/"): if '_continue' not in request.POST: return HttpResponseRedirect(get_other_app_url()) else: return super(MyModelAdmin, self).response_add(request, obj, post_url_continue) def response_change(self, request, obj): if '_continue' not in request.POST: return HttpResponseRedirect(get_other_app_url()) else: return super(MyAdmin, self).response_change(request, obj)