Django как лучше построить запрос

Интересно, как построить запрос. Я пытался использовать SubQuery или Prefetch, prefetch_related, select_releated, но не могу добиться лучших результатов, с которых я начал.

У меня ситуация, когда я получаю экземпляр объекта.

object = get_object_or_404(Object, id=pk)

тогда мне нужно получить больше данных.

object.id, 
object.name, 
object.description,
object.update_frequency,
object.resources.values_list('extension'),
object.tags.values_list('name'),                             
object.resources.count(),
object.resources.values_list('file'),
object.resources.values_list('licence'),
object.edited

каждая строка - это отдельный запрос. Как наилучшим образом уменьшить количество запросов?

Здесь вы получаете доступ к объекту Один, поэтому предварительная выборка не повысит эффективность. Но вы не должны использовать .values_list, если в этом нет крайней необходимости. Здесь вы можете перебирать .resources и, таким образом, обрабатывать элементы, а не выполнять дополнительные запросы.

Willem Van Onsem 31.10.2018 13:26
0
1
74
1

Ответы 1

Прежде всего, я бы проверил, стоит ли оптимизация. Я использую панель инструментов django-debug для некоторых показателей. Для SQL-запроса вы увидите, сколько запросов и сколько времени уходит на выполнение каждого из них.

Затем я сконцентрируюсь на самом важном. Хорошие ресурсы для чтения это и это.

Если вы предоставите полный пример, мы можем пойти глубже: шаблон, модель и т. д.

Другие вопросы по теме