За счет запроса Django - PullRequest
       0

За счет запроса Django

0 голосов
/ 18 октября 2010

У меня есть две таблицы: актер и изображения.Таблица Images связана с таблицей Actor посредством внешнего ключа.Я мог бы сделать запрос на Actor, который вытягивает список всех актеров с именами, начинающимися с буквы A. Предположим, я сохранил этот результат запроса в actor_list и передал его в шаблон.Я могу получить список всех изображений через шаблон путем итерации.Что-то вроде:

{% for actor in actor_list %}
    {% for image in actor.img_set %}
       {{ image }}
    {% endfor %}
{% endfor %}

Дорого ли это для базы данных?Имеет ли связанный img_set исходный список объектов-актеров или новый запрос попадает в базу данных каждый раз, когда я вызываю actor.img_set?

Ответы [ 2 ]

0 голосов
/ 19 октября 2010

Лучше, чем с помощью панели инструментов django, использовать библиотеку соединений.Если для Debug установлено значение True:

>>> from django.db import connection
>>> for actor in actor_list:
>>>  for image in actor.img_set:
>>>   image
>>> connection.queries()

. Здесь будут показаны все запросы, которые были выполнены, и количество времени, которое потребовался каждый.,: -)

0 голосов
/ 18 октября 2010

Вам следует установить панель инструментов отладки Django и посмотреть, какие SQL-запросы происходят под прикрытием.

Если вы получаете слишком много запросов, вы можете попробовать использовать select_related () для извлеченияв связанных данных в исходном запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...