Как мне создать список и подробные представления для django-taggit? - PullRequest
6 голосов
/ 29 ноября 2011

У меня довольно простая модель, которая использует Django Taggit для тегирования.

Все отлично работает, но теперь я хотел бы расширить некоторые функции, и я немного запутался.

То, что я хочу, это два представления.

Один, который показывает все мои теги в системе.Тот, который показывает все содержимое моего приложения с определенным тегом.

Для меня имеет смысл сделать следующее для каждого представления.

в views.py для myapp

  1. Все теги

    из myapp.models import App

    из taggit.models import Tag

    Класс TagList (ListView):

    "" "Получить все теги в БД" ""

    queryset = Tag.objects.all()
    template_name = "myapp/TagList.html"
    paginate_by = 10
    
  2. Все содержимое тега

    из приложения для импорта myapp.models

    из taggit.models import Tag

    class TaggedList (ListView): "" "Получить весь контекст для тега" ""

    template_name = "myapp/TaggedList.html"
    
    def get_object(self):
        return get_list_or_404(App, tag__iexact=self.kwargs['tag'])
    

ЕстьЯ сошел с ума или это действительно так просто?Кстати, я использую общие представления классов.

Спасибо за помощь.Dave

1 Ответ

3 голосов
/ 08 декабря 2011

2. Я считаю, что это для возврата одного объекта, а не нескольких объектов.

def get_object(self):  

Вместо этого, возможно, вам следует попробовать что-то вроде следующего:

def get_queryset(self):
    return TaggedItem.objects.filter(tag__iexact=self.kwargs['tag'])

Возвращает список элементов с GenericForeignKeys

Если вас интересует только конкретная модель под названием App, тогда

    return App.objects.filter(tags__name__in=[self.kwargs['tag']])

Имя переменной по умолчанию в шаблоне - TaggedItem_list, затем

{% for item in TaggedItem_list %}
   {{item.content_object}} {# generic foreign key here #}
{% endfor %}

urls.py должен быть похож на

url(r'someapp/(?P<tag>\w+)/$', TaggedList.as_view())
...