Сумма нескольких аннотаций в django orm

Вот моя модель:

class Product:
  name = models.CharField(max_length=80)
  price = models.FloatField()
  category = models.CharField(max_length=40)
class ProductInventory:
  inventory = models.IntegerField()
  product = models.OneToOneField(Product, on_delete=models.RESTRICT)

и вот сырой sql того, что я хочу достичь, но как мне написать это в django ORM?

SELECT product.category, SUM(price) * SUM(product_inventory.inventory) 
FROM product LEFT JOIN product_inventory 
ON product.id=product_inventory.product_id group by product.category;

Спасибо.

Вы можете попробовать использовать Sum в annotate и сделать фиктивное поле с именем sum_product и передать ему значения следующим образом. Надеюсь, это вам поможет.

from django.db.models import Sum

Product.objects.annotate(sum_product=Sum('price') * Sum('productinventory__inventory')).values('category', 'sum_product')
Вернуться на верх