список из .select_related(«…»)

#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() . Они должны использоваться только в очень специфических случаях, например, когда вы выполняете a GROUP BY для определенных полей.

2. Это конкретный случай антипаттерна primitive obsession: refactoring.guru/smells/primitive-obsession

3. Принудительная оценка набора запросов путем вызова list() для него. Например: entry_list = список(Entry.objects.all())

4. @Adelin: .values_list также не вызывает принудительную оценку. На самом деле он не создает список, он создает QuerySet . который содержит кортежи. К сожалению __repr__ , он представляет его в виде списка.