Количество объектов в Django ORM - PullRequest
0 голосов
/ 29 марта 2012

Рассмотрим эти псевдо-модели:

class BaseProduct:
   quantity_available = Integer

class Box(BaseProduct):
   items_in_box = Integer

>> BaseProduct.objects.count()
>> Integer

Но как мне узнать общее количество продуктов, так:

for each object[quantity_available * items_in_box] * total_objects

Решение:

Я использовал SimeonСумма Visser как частичное решение, добавление свойства в базовый класс:

@property
def _box_count(self):
    try:
        return self.items_in_box * self.quantity_available
    except AttributeError:
        return self.quantity_available

sum([item._box_count for item in BaseProduct.objects.all()])

1 Ответ

1 голос
/ 29 марта 2012

Попробуйте следующее:

sum([box.quantity_available * box.items_in_box for box in Box.objects.all()]

Он извлекает все ящики и для каждого ящика вычисляет количество, доступное для этого ящика, умноженное на количество предметов в ящиках этого типа. Наконец, он суммирует все эти значения, чтобы вы получили общее количество продуктов.

...