django中的复杂查询(嵌套)

时间:2014-03-16 18:23:53

标签: sql django orm

我有一个这样的链:

VENUE --- --- FK>员工---员工FK --->预订---预订FK ---> CHECKINS

我可以做:

employees = venue.employees.prefetch_related(' reservations')

然后,对于员工中的每个员工,我需要获得所有预订(由于prefetch_related而没有命中db),而且,对于每个预订,我需要计算所有签到(这是有问题的部分)。

这可能与django的ORM有关吗?你如何处理这样的问题,并避免生成1000个查询?

1 个答案:

答案 0 :(得分:0)

您可以使用annotations。 在您获得所有预订后,您可以使用预订通过单一呼叫获得计数。 有点像:

res_ids = reservations.values_list('id',flat=True)
res_w_count = Reservation.object.filter(id__in=reservation_ids).annotate(Count('checkins'))