Django标记标记如何获取顶级标记的查询集?

时间:2011-06-15 21:59:53

标签: python django django-models count tagging

我想为一个类编写一个管理函数,该类返回一个模型的关联标签,并为每个标签分配一个计数值。

例如:

#models.py
class Snippet(models.Model):
    ...
    tags = TagField()
    objects = managers.SnippetManager()

-------------

#managers.py:
from tagging.models import Tag

class SnippetManager(models.Manager):
    def top_tags(self, klass):
        tag_list = Tag.objects.usage_for_model(klass, counts=True)
return ???

--------------

#views.py:
from django.views.generic.list_detail import object_list
from calloway.models import Snippet

def top_tags(request):
    return object_list(request, queryset=Snippet.objects.top_tags(Snippet),
                       template_name='calloway/top_tags.html',
                       paginate_by=20)

我希望top_tags管理器返回由附加属性排序的查询集,这样我就可以循环遍历object_list并选择计数值。

即我的模板如下:

{% comment %} top_tags.html {% endcomment %}
{% for thistag in object_list %}
    <h2>Tag: {{ thistag.name }}</h2>
    <p>Count: {{ thistag.count }}</p>
    <p>Snippets:</p>
    {% tagged_objects thistag in calloway.Snippet as tagged_snippets %}
    {% for tagged_snippet in tagged_snippets %}
        <p><a href="{{ tagged_snippet.get_absolute_url }}">{{ tagged_snippet.title }}</a></p>
    {% endfor %}
{% endfor %}

有人可以推荐一种方法吗?如何将计数绑定到标签? “注释”是解决方案吗?

对于那些感兴趣的人,我正试图完成“实用Django项目”第8章“未来”段落中的“挑战”。

1 个答案:

答案 0 :(得分:0)