Агрегация django в App Engine

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

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам