Сумма нескольких аннотаций в 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')