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