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

Django模板无法显示字典中关联Purchases表的qty、product字段求助

问题原因

你在视图中定义的dispatcherOrders是字典结构,键为Orders模型实例,值为关联的purchases模型实例。Django模板遍历字典时默认只遍历字典的键,因此你循环中拿到的Orders变量只有订单表的字段,自然无法读取采购表的qty、product属性。


修复方案(改模板即可,无需调整视图逻辑)

修改dispatcherOrders.html的循环逻辑,遍历字典的键值对,分别取订单和采购实例的字段即可:

{% for order, purchase in dispatcherOrders.items %}
<tr>
  <th scope="row">1</th>
  <td>{{ order.Firstname }}</td>
  <td>{{ order.Lastname }}</td>
  <td>{{ order.Address }}</td>
  <td>{{ purchase.product }}</td>
  <td>{{ purchase.qty }}</td>
  <td>{{ order.status }}</td>
</tr>
{% endfor %}

可选优化建议

  • 遵循Django命名规范:模型类名首字母大写(purchases改为Purchase),外键字段不要带_id后缀(orders_id改为order,Django会自动在数据库层生成order_id存储主键值)
  • 优化查询性能避免N+1问题:视图中查询订单时直接关联查询采购数据,无需循环单独查:
    # 视图修改示例
    from django.db.models import Prefetch
    dispatcherOrders = {}
    orders = request.user.dispatchers.orders_set.all().prefetch_related(
        Prefetch('purchases_set', queryset=purchases.objects.all(), to_attr='purchase')
    )
    for order in orders:
        dispatcherOrders[order] = order.purchase[0]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:18:05