2009-08-27 119 views
22

我怎樣才能將用戶重定向到不同的應用程序上保存?重定向管理員保存

我有兩個應用程序,說app1app2。如果用戶在app2點擊保存,那麼它應該被重定向到app1而不是默認頁面。

我不想做一個自定義表單。

+4

爲什麼沒有接受任何問題的答案? – 2009-08-27 09:41:29

+0

保存在哪裏?在管理員中,以自定義的形式,在哪裏? – 2009-08-27 09:50:53

+0

在沒有定製form.it管理是簡單管理,我重寫保存功能 – ha22109 2009-08-27 10:01:28

回答

-7

高清change_view(個體經營,要求,OBJECT_ID,extra_context中用=無):

result = super(mymodeladmin, self).change_view(request, object_id, extra_context) 

result['Location'] = "your location" 

return result 
+4

這不是一個好的答案:如果change_view不成功會發生什麼?另外賦值給結果['Location']不是非常類似Django的(即使它可能工作)。上面的答案(Daniel Roseman)是一個很好的答案。 – 2011-11-08 18:02:40

+0

你應該驗證Roseman的答案以獲得2點聲望:)你可以學習如何使用stackexchange [here](http://meta.stackoverflow.com/) – 2011-12-08 11:17:32

+0

@Glide - 什麼是驗證(它與upvoting,我做過的)。您的文檔鏈接有點寬泛。 – 2011-12-28 15:05:59

83

要在保存到管理員後更改重定向目標,您需要覆蓋ModelAdmin類中的response_add()(用於添加新實例)和response_change()(用於更改現有的)。

請參閱原始碼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_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]) 
+0

我還沒有說我不接受answer.It打字錯誤,我已經改正了它。 – ha22109 2009-08-27 10:19:58

+0

可以解釋一點。我無法找到它 – ha22109 2009-08-27 10:22:50

+9

輸入錯誤與它有什麼關係?您已經在StackOverflow上提出了35個問題,並且您沒有接受過單個問題的最佳答案。這是非常不禮貌的。 – 2009-08-27 10:50:54

30

要添加到@ 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) 
+0

謝謝,這真的幫了我。 – nym 2015-10-19 20:52:57

相關問題