Вычислить подтаблицу Django

Я новичок в Django, я пытаюсь вычислить подтаблицу связанной таблицы. У меня есть две модели Transaction и Detail. вот мои модели:

    class Transaction(models.Model):
        id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
        code = models.CharField(max_length=50)

    class Detail(models.Model):
        id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
        transaction = models.ForeignKey(Transaction, related_name='details', on_delete=models.CASCADE)
        qty = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False)
        price = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False)

Я хочу получить сумму расчета (Detail.qty * Detail.price) в одном запросе следующим образом:

datas = Transaction.objects.all().annotate(sum=sum(qty*price))

Как сделать это на Django ORM?

Вы можете достичь этого с помощью комбинированного использования F и Sum в Django.

detail__ позволяет получить доступ к внешнему ключу Detail

from django.db.models import F, Sum

datas = Transaction.objects.annotate(sum=Sum(F('detail__qty')* F('detail__price')))
Вернуться на верх