【发布时间】:2018-02-12 12:26:03
【问题描述】:
是否可以对预取的查询进行注释/计数?
我在下面的初始查询是基于电路的,然后我意识到,如果一个站点没有任何电路,我将不会有一个“无”类别,它将一个站点显示为 Down。
conn_data = Circuits.objects.all() \
.values('circuit_type__circuit_type') \
.exclude(active_link=False) \
.annotate(total=Count('circuit_type__circuit_type')) \
.order_by('circuit_type__monitor_priority')
所以我改为查询站点并使用预取,现在对于没有活动链接的任何站点都有一个空的电路集。是否有 Django 方法可以针对 conn_data 中的circuit_set 创建新总数?我打算手动遍历所有站点并以这种方式添加总数,但想知道是否有办法在 QuerySet 中执行此操作?
我的最终结果应该是这样的:
[
{'circuit_type__circuit_type': 'Fibre', 'total': 63},
{'circuit_type__circuit_type': 'DSL', 'total': 29},
{'circuit_type__circuit_type': 'None', 'total': 2}
]
预取查询:
conn_data = SiteData.objects.prefetch_related(
Prefetch(
'circuits_set',
queryset=Circuits.objects.exclude(active_link=False).select_related('circuit_type'),
)
)
【问题讨论】:
标签: django