【问题标题】:django-admin: How to redirect to another URL after Object save? [duplicate]django-admin:保存对象后如何重定向到另一个 URL? [复制]
【发布时间】:2017-02-14 15:46:26
【问题描述】:

在 Django Admin 中,保存对象总是返回到它的对象列表。 现在我想在保存付款对象后转到发票对象列表。

我尝试了几件事:

在 admin.py 中:

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

或

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

我尝试使用 redirect() 而不是 HttpResponseRedirect ,但也没有效果。 在将错误代码插入 post_save 时,我收到一条错误消息 - 所以它确实被触发了,但不会发生重定向。

任何提示都会非常感谢 - 因为我在这个“简单”问题上被困了好几天。

谢谢

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    您可以覆盖response_add 和response_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(self, request, obj):
            return redirect('/admin/sales/invoice')
    

    不可能从信号处理程序内部返回响应。您不想覆盖 change_view,因为它会处理保存表单以及返回响应。

    【讨论】:

    • response_change 示例中缺少 self 参数。
    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 2012-06-17
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多