Как избежать использования `extra` при получении данных из postgres? - PullRequest
0 голосов
/ 22 апреля 2019

Я получаю данные из базы данных postgres со следующим кодом:

values = ('foo', 'bar', 'group')

FooBar.objects.order_by('-id').extra(select={'group': "'stackoverflow'"}).values(*values)

Код работает нормально, но я слышал, что использование extra не является предпочтительным, и даже в документации django говорится: «Используйте этометод как последнее средство ». Итак, вопрос в том, как можно избежать использования extra для извлечения данных?

1 Ответ

2 голосов
/ 22 апреля 2019

Вы можете попробовать с Значение () выражений.По сути, когда вам нужно представить значение целого, логического или строки в выражении, вы можете заключить это значение в Value ().

from django.db.models import Value, CharField
FooBar.objects.annotate(group=Value('stackoverflow', output_field=CharField())).values('foo', 'bar', 'group').order_by('-id')
...