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
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
74
1

Ответы 1

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

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

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

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