【发布时间】:2023-03-16 08:20:01
【问题描述】:
我有三个模型,以简化为例:
class Customer(models.Model):
email = models.CharField(max_length=128)
class Order(models.Model):
customer = models.ForeignKey(Customer)
order_status = models.CharField(blank=True, max_length=256)
class Lineitem(models.Model):
order = models.ForeignKey(Order)
quantity = models.IntegerField(blank=True)
price = models.DecimalField(max_digits=6, decimal_places=2)
我想查询客户(可能使用过滤器)并注释他们花费的总额(即总和超过(价格 * 数量)
我试过了:Customer.objects.filter(something).annotate(total_spent=Sum(F('order__lineitem__quantity') * F('order__lineitem__price')))
看起来 Sum() 不能与 F() 表达式一起使用。有没有其他方法可以做到这一点?
【问题讨论】:
-
你有没有让这个工作?
-
我也在寻找解决方案
标签: django django-models