У меня три модели.
class ManagerOrder(models.Model):
order = models.OneToOneField(Order, on_delete=models.CASCADE, primary_key=True)
kam = models.ForeignKey(KeyAccountManager, on_delete=models.PROTECT)
@property
def quantity(self):
return OrderData.objects.filter(order_id = self.order.id) \
.aggregate(Sum('quantity'))['quantity__sum']
class Order(models.Model):
order_data = models.ManyToManyField('anotherapp', through='OrderData', related_name='+')
class OrderData(models.Model):
quantity = models.FloatField()
Теперь я пытаюсь получить общее количество для каждого заказа. Но он снова и снова вызывает модель OrderData (проблема N + 1). Я читал о prefetch_related и ставлю то же самое на мой взгляд.
queryset = models.KeyAccountManagerOrder.objects.all().prefetch_related('order__order_data')
, но все равно он снова и снова вызывает модель OrderData.