Я хочу написать функцию менеджера для класса, которая возвращает связанные теги для модели и присваивает значение счетчика каждому тегу.
Например:
#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.