2017-02-14 73 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

謝謝阿拉斯代爾! – monkee

相關問題