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

Django中如何获取profiles模块中特定用户的关联数据

问题核心原因

你当前的实现存在两个逻辑问题:

  1. 传递给模板的csoport变量是当前项目所有用户的Profile集合,模板中遍历该集合会输出所有用户的分组值,无法匹配到对应用户
  2. 查询Kapcsolodasok数据时误用了Profile模型的Raw查询,关联取值逻辑冗余

最优解决方案(使用Django ORM,易维护无SQL注入风险)

1. 重写视图层查询

替换views.py中的查询逻辑,用ORM的关联查询直接获取所有需要的字段,同时避免N+1查询问题:

@login_required
def project_details_report(request, projekt_id):
    # 预关联User和Profile表,过滤当前项目下的所有关联记录
    kapcsolodasok = Kapcsolodasok.objects.select_related(
        'user_name', 'user_name__profile'
    ).filter(user_name__profile__projekt_id=projekt_id)
    # 获取当前项目对象
    projekt = Projekt.objects.get(id=projekt_id)

    context = {
        'kapcsolodasok': kapcsolodasok,
        'projekt': projekt,
    }
    return render(request, 'stressz/szervezeti_diagnozis.html', context)

2. 修改模板取值逻辑

不需要额外遍历分组集合,直接从每条记录的关联字段中取对应用户的分组值即可:

图表数据格式
{% for k in kapcsolodasok %}
{ id: "{{ k.user_name.get_full_name }}", label: "{{ k.user_name.get_full_name }}", group: "{{ k.user_name.profile.csoport }}" },
{% endfor %}
期望的用户分组列表格式
{% for k in kapcsolodasok %}
user: {{ k.user_name.id }}, csoport: {{ k.user_name.profile.csoport }}
{% endfor %}

兼容原生SQL的修改方案

如果坚持使用原生SQL实现,只需在Kapcsolodasok的查询中加入csoport字段到返回结果,删除单独的csoport查询即可,模板直接从kapcsolodasok的每条记录中取csoport字段值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:03