Задать вопрос
Astrohas
@Astrohas
Python/Django Developer

Как оптимизировать запрос?

Итак модели
class Modal(models.Model):
    slug = models.SlugField(max_length=255, blank=True)

class ModalItem(models.Model):
    of = models.ForeignKey(Modal, related_name="items")
    to = models.ForeignKey(Modal, related_name="lasts", blank=True, null=True)
    is_product = models.BooleanField(verbose_name="Is product", default=False)


а также функция

active_modal = get_object_or_404(Modal, slug="connect-modal")
all_modals = list()
all_modals.append(active_modal)

def get_referenced(modal):
        for item in modal.items.all():
            if not item.is_product and item.to is not None:
                all_modals.append(item.to)
                get_referenced(item.to)
 get_referenced(active_modal)


Кроме этого внутри шаблона для каждого модалf идет цикл
{% for modal in modals %}
  {% for item in modal.modalitem_set.all %}


------
Проблема в том что это все генерирует 1400 запросов к базе данных (хотя величины таблиц не превышают и 100). Есть ли способ как-то это оптимизировать?
  • Вопрос задан
  • 268 просмотров
Подписаться 1 Оценить 5 комментариев
Ответ пользователя Александр Кузнецов К ответам на вопрос (3)
DarkRaven
@DarkRaven
разработка программного обеспечения
Вам нужно посмотреть в сторону Eager Loading или пересмотреть в целом получение нужных данных
Ответ написан
Комментировать