#python #django #list #django-models
#python #django #Список #django-модели
Вопрос:
Есть ли прямой способ преобразовать запрос, подобный этому:
query_db = Example.objects.all()
selected_db = Example.select_related("...")
print(type(selected_db))
...
<class 'django.db.models.query.QuerySet'>
…в список? Я знаю, что есть способы сделать это впоследствии, но есть ли такие функции, как, например…
...values_list("...", flat=True)
…чтобы решить это непосредственно в запросе?
Комментарии:
1. Пожалуйста, не используйте
.values(..)
или.values_list()
. Они должны использоваться только в очень специфических случаях, например, когда вы выполняете aGROUP BY
для определенных полей.2. Это конкретный случай антипаттерна primitive obsession: refactoring.guru/smells/primitive-obsession
3. Принудительная оценка набора запросов путем вызова list() для него. Например: entry_list = список(Entry.objects.all())
4. @Adelin:
.values_list
также не вызывает принудительную оценку. На самом деле он не создает список, он создаетQuerySet
. который содержит кортежи. К сожалению__repr__
, он представляет его в виде списка.