Django - Запрос: как декодировать целочисленное значение поля с помощью строкового значения «на лету» - PullRequest
1 голос
/ 17 января 2020

возможно, это не очень хорошая практика, но я хотел бы знать, возможно ли декодировать целочисленное значение поля с помощью его строкового значения. Я знаю, что у меня должны быть конкретные c модели, связанные как тезаурус ...

У меня есть модель mymodel. Я создаю QuerySet mymodel.objects.values ​​('id', 'var2', 'var3', 'var4'), например, var3 - целое число (0/1) для ответа Да / Нет

Можно ли заполнить мой QuerySet значением Да или Нет вместо его целочисленного значения?

1 Ответ

1 голос
/ 17 января 2020

Вы можете аннотировать его, например:

from django.db.models import Case, CharField, Value, When

QuerySet.objects.values('id', 'var2', 'var4',
    new_var3=Case(
        When(var3=1, then=Value('Yes')),
        default=Value('No'),
        output_field=CharField(),
    )
)

Обратите внимание, что вам, однако, следует переименовать переменную.

Как говорится, это не хорошо Идея использовать .values(..) или .values_list(..) для eprform сериализации. Кроме того, он будет выполнять обработку текста в базе данных, и зачастую это не является основной задачей базы данных . Обычно сериализаторы [drf-doc] используются для этого.

...