我有一个这样的链:
VENUE --- --- FK>员工---员工FK --->预订---预订FK ---> CHECKINS
我可以做:
employees = venue.employees.prefetch_related(' reservations')
然后,对于员工中的每个员工,我需要获得所有预订(由于prefetch_related而没有命中db),而且,对于每个预订,我需要计算所有签到(这是有问题的部分)。
这可能与django的ORM有关吗?你如何处理这样的问题,并避免生成1000个查询?
答案 0 :(得分:0)
您可以使用annotations。 在您获得所有预订后,您可以使用预订通过单一呼叫获得计数。 有点像:
res_ids = reservations.values_list('id',flat=True)
res_w_count = Reservation.object.filter(id__in=reservation_ids).annotate(Count('checkins'))