Итак модели
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). Есть ли способ как-то это оптимизировать?