Redirigir al administrador Guardar

¿Cómo puedo redirigir a un usuario a una aplicación diferente en Guardar?

Tengo dos aplicaciones, digamos app1 y app2 . Si un usuario hace clic en Guardar en la app2 , debe redireccionarse a la app1 lugar de a la página predeterminada.

No quiero hacer una forma personalizada.

Para cambiar el destino de la redirección después de guardar en el administrador, debe sobrescribir response_add() (para agregar nuevas instancias) y response_change() (para cambiar las existentes) en la clase ModelAdmin .

Ver el código original en django.contrib.admin.options .

Y si desea que la gente lo siga ayudando en StackOverflow, debe aceptar las respuestas a sus preguntas.

Ejemplos rápidos para aclarar cómo hacerlo (se encontrarían dentro de una clase 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]) 

Para agregar a la respuesta de @ DanielRoseman, y NO QUIERES que el usuario sea redirigido cuando eligen Guardar y continuar y no el botón Guardar, entonces podrías usar esta solución.

 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) 

Tal vez eche un vistazo a los espacios de nombres de URL … Probablemente podría usar HttpResponseRedirect + reverse para redirigir al usuario dentro de su método de salvar anulado. Tenga en cuenta que esta es una nueva característica en Django 1.1 y no es compatible con 1.0.x.

http://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces

def change_view (self, request, object_id, extra_context = None):

 result = super(mymodeladmin, self).change_view(request, object_id, extra_context) result['Location'] = "your location" return result