저장시 다른 앱으로 사용자를 리디렉션 할 수 있습니까?관리자 리디렉션 저장
두 개의 앱이 있습니다 (예 : app1
및 app2
). 사용자가 app2
에 저장을 클릭하면 기본 페이지가 아닌 app1
으로 리디렉션되어야합니다.
사용자 정의 양식을하고 싶지 않습니다.
저장시 다른 앱으로 사용자를 리디렉션 할 수 있습니까?관리자 리디렉션 저장
두 개의 앱이 있습니다 (예 : app1
및 app2
). 사용자가 app2
에 저장을 클릭하면 기본 페이지가 아닌 app1
으로 리디렉션되어야합니다.
사용자 정의 양식을하고 싶지 않습니다.
데프 change_view (자기, 요청, OBJECT_ID, extra_context = 없음) :
result = super(mymodeladmin, self).change_view(request, object_id, extra_context)
result['Location'] = "your location"
return result
이것은 좋은 대답이 아닙니다. change_view가 성공적이지 않은 경우 어떻게됩니까? 또한 result [ 'Location']에 할당하는 것은 장고와 유사하지 않습니다 (작동 할지라도).위의 대답 (Daniel Roseman)은 좋은 답변입니다. –
당신은 Roseman의 답을 검증하여 2 가지 평판을 얻으실 수 있습니다 :) stackxchange [here] (http://meta.stackoverflow.com/)를 사용하는 방법을 배울 수 있습니다. –
@ 글라이드 - 유효성 검사 중 (upvoting, 나는 그것을했다). 귀하의 문서 링크가 약간 넓었습니다. –
관리자에서 저장 한 후 리디렉션 대상을 변경하려면 클래스에서 (새 인스턴스 추가 용) 및 response_change()
(기존 변경 용)을 다시 정의해야합니다.
django.contrib.admin.options
의 원본 코드를 참조하십시오.
사람들이 StackOverflow에서 계속 돕길 원한다면 질문에 대한 대답을 받아 들여야합니다.
빠른 예는이 작업을 수행하는 방법이 명확하게하기 위해 (A 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_add(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])
어쩌면 URL 네임 스페이스에 대해 살펴 ... 당신은 리디렉션 역 HttpResponseRedirect를 + 사용 아마도 수 사용자가 재정의 한 save 메소드 내부에 있습니다. 이것은 Django 1.1의 새로운 기능이며 1.0.x에서는 지원되지 않습니다.
http://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces
는 @ 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)
감사합니다. 이것은 정말로 나를 도왔습니다. – nym
질문에 대해 답변을 제공하지 않는 이유는 무엇입니까? –
어디에서 저장 하시겠습니까? 관리자의 사용자 정의 양식에서, 어디서? –
은 사용자 정의 form.it이 아닌 admin에서 저장 기능을 무시합니다. – ha22109