我有一个带有许多外键字段的模型,例如带有字段“类型”、“级别”、“颜色”、“强度”的模型产品(只是一个通用示例)。
然后,我有一个页面可以使用 Type 表单编辑给定类型的所有产品,其中产品作为内联表单集,并可选择使用extra=10
.
我觉得很奇怪的是,每次我在模板上输出一个外键选择字段时,Django 都会查询数据库以获取选项(每次)。
例如:
{% for form in formset %}
{{ form.level }}
{{ form.color }}
{{ form.intensity }}
{% endfor %}
对于 20 个产品(和 10 个空的额外表单),上面的代码select * from ...
从级别、颜色和强度发出 30 个,总共 90 个查询(使用 Django 调试工具栏显示),其中 3 个应该足够了。这些选项不太可能在请求中更改,但即使他们这样做了,我也绝对不希望某些新添加的选项仅出现在最后 5 个表单中。
有什么方法可以优化我的模型/表单/视图/模板,以使数据库不会像这样不必要地受到冲击?
-
免责声明:我对 django 和 python 比较陌生,并且不禁想到必须有一种方法可以以某种方式解决这个问题。