Ich habe ein Modell Order
, das eine Eigenschaft hat, die order_total
basierend auf OrderItem
s durch Fremdschlüssel verknüpft berechnet.Berechnen Sie die Summe der Modelleigenschaften in Django
Ich möchte die Summe einer Anzahl von Order
Instanzen 'order_total
Eigenschaften berechnen.
Gibt es eine Möglichkeit, dies zu tun?
class Order(models.Model):
customer = models.ForeignKey(Customer)
placed = models.DateField()
...
def get_total_cost(self):
return sum(item.get_cost() for item in self.items.all())
order_total = property(get_total_cost)
class OrderItem(models.Model):
order = models.ForeignKey(Order, related_name="items")
product = models.ForeignKey(Product, related_name="order_items")
quantity = models.PositiveIntegerField(default=1)
...
def get_cost(self):
return self.product.price * self.quantity
Dies ist meine Frage:
>>> Order.objects.all().aggregate(Sum("order_total"))
Welche diesen Fehler zurückgibt:
django.core.exceptions.FieldError: Cannot resolve keyword 'order_total' into field. Choices are: placed, customer, customer_id, id, items, paid
diese Antwort suchen: http://stackoverflow.com/a/3066607/641249 Versuchen Sie stattdessen: https://docs.djangoproject.com/de/1.10/topics/db/aggregation/#aggregating-annotations – neverwalkaloner