J'ai trois modèles, simplifiés pour l'exemple:
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)
Je souhaite interroger les clients (éventuellement avec un filtre) et annoter le total qu'ils ont dépensé (c'est-à-dire la somme (prix * quantité)
J'ai essayé: Customer.objects.filter(something).annotate(total_spent=Sum(F('order__lineitem__quantity') * F('order__lineitem__price')))
Il semblerait que Sum () ne puisse pas être utilisé avec des expressions F (). Y a-t-il une autre façon de procéder?