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

Django UpdateView模板如何获取当前实例grpid值生成带参跳转链接

Django模板获取关联外键ID实现跳转的解决方案

问题原因

你现有代码的错误在于模板中取grpid的逻辑不对:form.accgrp是Django生成的表单字段实例,不是当前编辑的Account对象关联的AccGroup实例,自然读取不到grpid属性。

解决方案

Django的UpdateView在渲染模板时,会自动把当前正在操作的模型实例注入到模板上下文,你可以用两个变量直接访问:

  • 通用变量名object,所有类视图通用
  • 模型小写名account,和你定义的Account模型对应

你只需要把模板里的链接2代码改成如下写法即可:

<a class="btn btn-info btn-sm" href="{% url 'polls:accgrpList' object.accgrp.grpid %}">Back To Account List</a>

可选优化

  1. 如果你要做兼容兜底,避免极端情况下关联对象为空报错,可以加模板过滤器设置默认值:
<a class="btn btn-info btn-sm" href="{% url 'polls:accgrpList' object.accgrp.grpid|default:0 %}">Back To Account List</a>
  1. 你现有视图的get_success_url方法可以简化,不需要额外查询数据库:UpdateView在表单保存成功后会自动把实例赋值给self.object,优化后代码如下:
class AccountUpdateForm(UpdateView):
    model = Account
    fields = ['shortcut','accname','accgrp']
    def get_success_url(self):
        # 直接使用self.object,不需要再次查询数据库
        return f'/polls/accmst/{self.object.accid}'
    # 更规范的写法推荐用reverse避免硬编码路径,假设你accmst页面的路由名为accmstDetail:
    # from django.urls import reverse
    # def get_success_url(self):
    #     return reverse('polls:accmstDetail', args=[self.object.accid])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 21:24:07