Я пытаюсь найти способ добавить аннотацию к двум полям модели, сложенной вместе. Примерно так:
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, поскольку передаваемая строка запроса может иметь различные фильтры и исключает уже выполненные в нем, что делает эту перспективу немного сложный. Я также стараюсь избегать добавления поля к реальной модели и вычисления его значения во время сохранения, если только это не единственный способ.