Я пытаюсь найти способ добавить аннотацию к двум полям модели, сложенной вместе. Что-то вроде:
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, поскольку передаваемая строка запроса может иметь различные фильтры и исключения, уже выполненные для нее, что делает эту перспективу немного сложной. Я также пытаюсь избежать добавления поля в фактическую модель и вычисления его значения во время сохранения, если только это не единственный способ.
'total_heal'
не упоминается в вашем запросе, надеюсь, вы имеете в видуtotal_amount
? - person Torsten Engelbrecht   schedule 17.05.2011