У меня есть модель django с полями name
(строка) и value
(целое число). Скажем, мне нужно вернуть набор запросов из объектов {name: ..., value: ...}, причем каждое значение удваивается. Сейчас я пытаюсь сделать следующее:
queryset.annotate(value=F('value') * 2)
Однако django говорит мне, что поле value
уже существует.
Я также пытался использовать extra:
queryset.annotate(value_double=F('value') * 2).extra(select={'value': 'value_double'})
, но это также не работает, поскольку value_double
не является допустимым полем.
Конечно, в этом случае я мог бы использовать что-то вроде queryset.extra(select={'value': 'value * 2'})
, но у меня есть некоторые другие, более сложные случаи, включающие множество функций, когда я действительно не хочу писать sql, но я бы лучше нашел решение в django. Опять же, во всех моих случаях annotate
работает отлично, пока я даю результату новое имя.