У меня есть модель с несколькими полями внешнего ключа, например, Модель Продукт с полями «тип», «уровень», «цвет», «интенсивность» (просто общий пример).
Затем у меня есть страница для редактирования всех продуктов данного типа с использованием формы Type с продуктами в качестве встроенного набора форм с возможностью добавления дополнительных продуктов, используя extra=10
.
Я нахожу очень странным то, что каждый раз, когда я выводю одно из полей выбора внешнего ключа в шаблоне, Django запрашивает базу данных для получения опций (каждый раз).
Например:
{% for form in formset %}
{{ form.level }}
{{ form.color }}
{{ form.intensity }}
{% endfor %}
С 20 продуктами (и 10 пустыми дополнительными формами) приведенный выше код выдает 30 select * from ...
от уровня, цвета и интенсивности, что составляет 90 запросов (выявленных с помощью Django Debug Toolbar), где 3 должно быть достаточно. Параметры вряд ли изменят средний запрос, но даже если бы они это сделали, я бы не хотел, чтобы некоторые новые добавленные параметры отображались только в последних 5 формах.
Есть ли способ оптимизировать мои модели / формы / представления / шаблоны, чтобы база данных не забивалась таким образом без необходимости?
-
Отказ от ответственности: я относительно новичок в django и python и не могу не думать, что должен быть способ как-то решить эту проблему.