Как создать список и подробные представления для Django-Taggit?
-
25-10-2019 - |
Вопрос
У меня есть довольно простая модель, которая использует Джанго Таггит для тега.
Все отлично работает, но теперь я хотел бы расширить некоторые функции, и я немного смущен.
Я хочу два просмотра.
Тот, который показывает все мои теги в системе. Тот, который показывает весь контент из моего приложения с определенным тегом.
Что имеет смысл для меня, так это сделать следующее для каждого представления.
в взгляде.
Все теги
от MyApp.Models Import App
от тега импорта Taggit.Models
класс Taglist (ListView):
"" Получите все теги в DB "" ""
queryset = Tag.objects.all() template_name = "myapp/TagList.html" paginate_by = 10
Весь контент для тега
от MyApp.Models Import App
от тега импорта Taggit.Models
Класс TaggedList (ListView): "" "Получить все контент для тега" "" "
template_name = "myapp/TaggedList.html" def get_object(self): return get_list_or_404(App, tag__iexact=self.kwargs['tag'])
Я сошел с ума или это действительно так просто? Кстати, я использую общие представления классов.
Спасибо за помощь. Дэйв
Решение
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())