You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何在get_success_url传递关联项目的变量参数?

Django DeleteView get_success_url传递关联外键参数解决方案

你的问题出在CenterDelete视图的get_success_url方法中,没有正确获取待删除Center关联的ProjectID,且参数格式不符合reverse要求。修改方法如下:

修改CenterDelete视图代码

class CenterDelete(DeleteView): 
    model = Center
    template_name = 'Procure/center_delete.html'
    def get_success_url(self):
        # 获取当前待删除的Center实例
        current_center = self.object
        # 提取关联Project的ID
        project_id = current_center.Project.id
        # 生成带项目ID的跳转URL,args需传入元组格式参数
        return reverse('centers_sys', args=(project_id,))

关键说明

  1. 获取当前实例:Django的DeleteView会自动将待操作的模型实例赋值给self.object,通过它可以直接访问关联的Project对象。
  2. 参数格式要求:reverse的args参数必须是可迭代对象(如元组),所以单个参数要写成(project_id,)(末尾加逗号确保是元组)。
  3. 避免硬编码:之前写死args='2'的方式不具备通用性,通过实例获取关联ID才能适配所有项目场景。

验证逻辑

删除操作完成后,生成的URL会匹配路由path('centers/<int:pk>', ..., name='centers_sys'),其中pk就是关联的ProjectID,CentersListViewSys的get_queryset方法会通过self.kwargs['pk']拿到该ID,正确过滤对应项目下的Center列表。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:02:15