агрегация django в App Engine - PullRequest
0 голосов
/ 19 марта 2011

Я пытаюсь вычислить сумму списка записей. У меня есть 3 варианта

  1. customer = Customer.objects.all () Затем переберите этот список и рассчитайте сумму
  2. Использование агрегации Всего = Customer.objects.aggregate (Сумма («сумма»))
  3. Использование Annotate Customer.objects.annotate (Сумма ( 'сумма'))

Мой вопрос
1. Аннотируйте и агрегируйте, какой из них быстрее?
2. Я не могу использовать агрегат в Django, он выбрасывает Эта база данных не может использовать агрегацию. Я использую хранилище данных движка приложений Google

1 Ответ

2 голосов
/ 19 марта 2011

3 не вариант.Аннотирование применяется к каждому объекту, поэтому вам все равно придется суммировать «сумму» через python.

Поскольку вы говорите, что агрегация невозможна, у вас остается один выбор:

total = sum((x.amount for x in Customer.objects.all())

Или перейдите на сырой GQL, которого я не знаю: D

...