@MOV_UA

Можно ли так использовать функцию F?

Messages.objects.annotate(new_field=Value(('a1' if F('id') in [1755, 1753] else 'a2'), output_field=CharField()))
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
TaPO4eg3D
@TaPO4eg3D
Rust, Python
Нет. В этом случае нужно использовать Conditional Expressions. Пример:
from django.db.models import CharField, Value, Case, When

Messages.objects.annotate(
    new_field=Case(
        When(id__in=[1755, 1753], then=Value('a1')),
        default=Value('a2'),
        output_field=CharField()
    )
)


Если а1 и а2, это не значения, а поля, то тогда нужно заменить Value на F
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы