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

如何在Django中用values_list展示指定用例关联的用户名

问题解决:展示指定用例关联的用户名

问题根源

  1. 查询条件错误:UsecaseAssign模型中没有直接的usecase_id字段,需通过外键关联的usecase__usecase_id过滤指定用例
  2. 未关联User模型:原查询仅获取user_email字段值,未关联User模型,无法直接获取user_name
  3. 查询方式不当:values_list+values的组合会丢失关联对象信息,无法访问关联模型属性

修正步骤

1. 修正views.py中的查询逻辑

替换原查询代码为:

@user_login_required
def view_usecase_details(request,ucid):
    usecase_details = Usecase.objects.filter(usecase_id=ucid).first()
    if request.method == "GET":
        # 通过外键关联过滤,预加载User对象避免N+1查询
        usecase_assigned = UsecaseAssign.objects.select_related('user_email').filter(usecase__usecase_id=ucid)
        context = {
            'usecase_details': usecase_details, 
            "users": User.objects.all(), 
            'usecase_assigned': usecase_assigned
        }
        return render(request, 'UsecaseDetails.html', context)
  • 用usecase__usecase_id=ucid替代错误的usecase_id=ucid,正确关联Usecase模型主键
  • select_related('user_email')预加载关联的User对象,提升查询性能
  • 移除values_list和values,直接获取UsecaseAssign对象集合,保留关联关系

2. 修正模板中的遍历代码

修改模板中展示已分配用户的部分:

<ul class="list-group list-group-flush">
    <li class="list-group-item d-flex align-items-center justify-content-between px-0 border-bottom">
        <div>
            <p class="pe-4">Assigned users:</p>
            {% for assign in usecase_assigned %}
            <p class="pe-4">{{ assign.user_email.user_name }}</p>
            {% endfor %}
        </div>
    </li>
</ul>
  • 通过assign.user_email.user_name访问关联User模型的用户名(UsecaseAssign的外键字段名为user_email,指向User模型)

可选优化:模型字段名规范

为提升代码可读性,建议修改UsecaseAssign的字段名:

class UsecaseAssign(models.Model):
    usecase_assign_date = models.DateTimeField(primary_key=True)
    usecase = models.ForeignKey(Usecase, models.DO_NOTHING)
    user = models.ForeignKey('User', models.DO_NOTHING, db_column='user_email')

修改后,views和模板中的访问路径对应改为assign.user.user_name,逻辑更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:45:11