尝试优化使用1.3的django应用程序。迁移到最新的django还不是一个选择,因为它是一个巨大的应用程序。
所以模板中有这个代码:
<select id="item_product">
{% for ip in items %}
<option value="{{ ip.program.id }}/{{ ip.sector.id }}/">{{ ip }}</option>
{% endfor %}
</select>
这似乎会为每个选项生成数据库调用 - 只需加载一个下拉按钮就可以加载页面!用虚拟字符串替换选项值确实会立即加载页面。
视图非常简单:
@render_to('pick_item.html')
def pick_item(request):
person = request.user.get_profile()
items = ItemProduct.objects.filter(program__in=person.programs)
return {'items': items }
此代码返回的速度非常快。
如何为django 1.3优化此代码,以便下拉选项具有更高效的ID?
答案 0 :(得分:3)
如果您只需要ID:
<select id="item_product">
{% for ip in items %}
<option value="{{ ip.program_id }}/{{ ip.sector_id }}/">{{ ip }}</option>
{% endfor %}
</select>
如果你需要更复杂的东西:
@render_to('pick_item.html')
def pick_item(request):
person = request.user.get_profile()
items = ItemProduct.objects.filter(program__in=person.programs).select_related('program', 'sector')
return {'items': items }