【发布时间】:2013-11-30 12:27:30
【问题描述】:
这是我的模板标签:
@register.filter
def split_to_4_columns(queryset):
split = int(ceil(queryset.count()/4.))
columns = list()
for i in range(4):
columns.append(queryset[i*split:(i+1)*split])
return columns
这是我在模板中的伪用法:
{% for column in queryset|split_to_4_columns %}
<div class="list">
{% for object in column %}
<a href="{{ object.get_absolute_url }}" class="item">{{ object }}</a>
{% endfor %}
</div>
{% endfor %}
它基本上将我的长查询集(几百个对象)分成 4 列,以便更好地呈现 html。但它似乎也对我的数据库造成了沉重的打击。首先它评估完整的查询集,然后每一列都有自己的评估,我该如何优化它?
我正在使用缓存,但我仍然想知道如何在比缓存更低的级别上对其进行优化。
【问题讨论】:
标签: python django django-templates django-database