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

Django模板中使用related_name无法显示用例进度日期的问题

用例进度日期显示空白问题修复及性能优化

问题背景

需开发页面展示所有用例信息及对应进度数据,但当前页面中进度日期显示为空白。

问题原因及修复步骤

1. 模板循环变量误用

模板中循环进度数据时,错误使用了usecase.usecaseids.all,需改为对应循环变量(如模板中遍历用例的变量为result)的result.usecaseids.all。

正确模板示例:

{% for result in usecase_details %}
  <div>
    <h3>{{ result.usecase_name }}</h3>
    <p>交付日期:{{ result.delivery_date }}</p>
    <!-- 循环展示对应进度数据 -->
    {% for progress in result.usecaseids.all %}
      <div>
        <p>进度日期:{{ progress.usecase_progress_date }}</p>
        <p>进度值:{{ progress.usecase_progress_value }}</p>
      </div>
    {% endfor %}
  </div>
{% endfor %}

说明:usecaseids是UsecaseProgress模型中关联Usecase时设置的related_name,每个Usecase实例需通过自身的这个属性获取对应的进度集合,之前误用非当前循环实例的变量导致无法读取进度数据,进而日期显示空白。

2. 查询性能优化

原视图中直接使用Usecase.objects.all()会触发N+1查询(每获取一个用例单独查询一次进度数据),可通过prefetch_related预取关联的进度数据,减少数据库查询次数,提升页面加载性能。

修正后的views.py代码:

@user_login_required
def view_usecase(request):
    # 预取关联的UsecaseProgress数据,避免N+1查询
    usecase_details = Usecase.objects.all().prefetch_related('usecaseids')
    context = {'usecase_details': usecase_details}
    return render(request, 'ViewUsecase.html', context)

关联模型确认

两个模型的关联关系已正确配置:

  • Usecase模型为主模型
  • UsecaseProgress模型通过usecase外键关联Usecase,并设置related_name='usecaseids',确保Usecase实例可通过该属性访问对应的进度记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:30:33