发布于 2012-12-31 17:41:28
对于django-taggit来说,django-taggit-templatetag似乎是标签云的“去处”。
不过,它似乎不处理查询集。:(
所以,我补充说:
@register.inclusion_tag('taggit_templatetags/tagcloud_include_qs.html')
def include_tagcloud_qs(queryset):
try:
queryset = queryset.annotate(num_times=Count('taggeditem_items'))
except FieldError:
queryset = queryset.annotate(num_times=Count('taggit_taggeditem_items'))
num_times = queryset.values_list('num_times', flat=True)
weight_fun = get_weight_fun(T_MIN, T_MAX, min(num_times), max(num_times))
queryset = queryset.order_by('name')
for tag in queryset:
tag.weight = weight_fun(tag.num_times)
return {"tags": queryset}至
templatetags/taggit_extras.py并转到taggit_templatetag/tagcloud_include_qs.html的新文件中。
<div>
{% for tag in tags %}
<font size={{tag.weight|floatformat:0}}>{{tag}}</font>
{% endfor %}
</div>我在模板中像这样使用它:
{% include_tagcloud_qs my_queryset %}我没有花太多时间看django-taggit-templatetag代码,所以可以用更好的解决方案来更新它!
PS:
我的看法是这样的:
my_queryset = Tag.objects.filter(foo__bar=baz).distinct()发布于 2012-08-08 22:51:26
这个答案展示了如何构建标记云。您可以根据参数在视图中创建一个查询集,生成一个字典,并在模板中呈现它,如该答案所示。
发布于 2012-05-28 12:27:32
我建议用django标记。它已经有了很好的记录。我用它创造了标签云。您可以通过模型、模型实例等通过易于加载的模板标记访问标记云。这有点麻烦,但是使用.counts方法,您可以黑掉一些css来增加每个字体的大小,就像您在一个真正的标记云中看到的那样。Django-标记实际上在这方面非常出色,因为它有一个默认的模板标记,其中包含您所描述的所有内容的格式选项。
https://stackoverflow.com/questions/10783039
复制相似问题