django-taggit-templatetagsは、django-taggitのタグクラウドの「行き先」の場所のようです。
ただし、クエリセットを処理するようには見えません。:(
だから、私は追加しました:
@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_templatetags/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-templatetagsコードを見るのにあまり時間を費やしていないので、これをより良い解決策で自由に更新してください!
PS:
ビューに次のようなクエリセットが表示されます。
my_queryset = Tag.objects.filter(foo__bar=baz).distinct()