【问题标题】:Sum multiple annotates in django orm在 django orm 中对多个注释求和
【发布时间】:2021-11-03 06:05:41
【问题描述】:

这是我的模型:

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;

谢谢。

【问题讨论】:

    标签: mysql django django-models django-views


    【解决方案1】:

    您可以尝试在注释中使用 Sum 并创建一个名称为 sum_product 的虚拟字段,并将其传递给这样的值。希望这对你有用。

    from django.db.models import Sum
    
    Product.objects.annotate(sum_product=Sum('price') * Sum('productinventory__inventory')).values('category', 'sum_product')
    

    【讨论】:

      猜你喜欢
      • 2020-12-10
      • 2016-10-06
      • 2019-02-24
      • 2015-10-29
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2021-01-20
      • 2017-11-27
      相关资源
      最近更新 更多