2017-02-14 6 views
1

Django Adminでは、オブジェクトの保存は常にオブジェクトのリストに戻ります。 これで、支払いオブジェクトを保存するときに請求書オブジェクトのリストに行きたいと思っています。django-admin:オブジェクトを保存した後に別のURLにリダイレクトする方法は?

が、私はいくつかのことを試してみました:admin.pyで

@receiver(post_save, sender=Payment) 
def custom_redirect(sender, instance, **kwargs): 
    return HttpResponseRedirect('/admin/sales/invoice') 

OR

class PaymentAdmin(VersionAdmin, admin.ModelAdmin): 
    def change_view(self, request, object_id, extra_context=None): 
     return HttpResponseRedirect('/admin/sales/invoice') 

代わりのHttpResponseRedirectを私は(リダイレクト使用してみました)、だけでなく、効果なしと。 post_saveに間違ったコードを挿入すると、エラーメッセージが表示されます。つまり、トリガーされますが、リダイレクトは発生しません。

私はこの「単純な」問題で数日間立ち往生しているので、何らかのヒントが非常におかしくなります。

おかげ

答えて

4

あなたはresponse_addresponse_changeメソッドをオーバーライドすることができます。

from django.shortcuts import redirect 

class PaymentAdmin(VersionAdmin, admin.ModelAdmin): 
    def response_add(self, request, obj, post_url_continue=None): 
     return redirect('/admin/sales/invoice') 

    def response_change(request, obj): 
     return redirect('/admin/sales/invoice') 

シグナルハンドラの内部から応答を返すことはできません。 change_viewを無効にしたくないのは、フォームを保存して応答を返すためです。

+0

ありがとうAlasdair! – monkee

関連する問題