Аннотации Django к полю добавлены с дополнительными

Я пытаюсь найти способ добавить аннотацию к двум полям модели, сложенной вместе. Примерно так:

total_done = qs.values(
    'ability__ability_name',
).extra(
    select={
        'total_amount': 'effective_value + overage',
    }
).annotate(
    total=Sum('total_amount'),
).values(
    'ability__ability_name', 'total_amount'
).order_by('-total_amount')

Вышеупомянутое не работает и дает ошибка «Не удается разрешить ключевое слово 'total_amount' в поле» Я уже пробовал решение, указанное здесь: Использование .aggregate () для значения, введенного с помощью .extra (select = {...}) в запросе Django? Однако не повезло получить сообщение «Невозможно разрешить ключевое слово 'total_amount' в поле»

. Все, кроме выполнения запроса в необработанном sql, поскольку передаваемая строка запроса может иметь различные фильтры и исключает уже выполненные в нем, что делает эту перспективу немного сложный. Я также стараюсь избегать добавления поля к реальной модели и вычисления его значения во время сохранения, если только это не единственный способ.

11
задан Community 23 May 2017 в 10:27
поделиться