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
相关产品推荐
相关产品推荐

