Интересно, как построить запрос. Я пытался использовать 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
каждая строка - это отдельный запрос. Как наилучшим образом уменьшить количество запросов?






Прежде всего, я бы проверил, стоит ли оптимизация. Я использую панель инструментов django-debug для некоторых показателей. Для SQL-запроса вы увидите, сколько запросов и сколько времени уходит на выполнение каждого из них.
Затем я сконцентрируюсь на самом важном. Хорошие ресурсы для чтения это и это.
Если вы предоставите полный пример, мы можем пойти глубже: шаблон, модель и т. д.
Здесь вы получаете доступ к объекту Один, поэтому предварительная выборка не повысит эффективность. Но вы не должны использовать
.values_list, если в этом нет крайней необходимости. Здесь вы можете перебирать.resourcesи, таким образом, обрабатывать элементы, а не выполнять дополнительные запросы.