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