Я видел это:
Создание уникального списка тегов Django-Taggit в трясогузке;
и решения там создали список всех сохраненных тегов, т. е. тегов изображений, документов и т. д.
Я пытаюсь достичь аналогичной цели. На странице индекса новостей есть раскрывающийся список тегов страницы новостей.
Кажется, я не могу получить список тегов, которые являются только тегами страницы новостей, в настоящее время это дает мне список всех тегов на моем сайте, включая теги изображений и документов.
from django.template.response import TemplateResponse
from modelcluster.fields import ParentalKey, ParentalManyToManyField
from modelcluster.tags import ClusterTaggableManager
from taggit.models import TaggedItemBase, Tag
from core.models import Page
class NewsPageTag(TaggedItemBase):
content_object = ParentalKey('NewsPage', related_name='tagged_items')
class NewsPage(Page):
tags = ClusterTaggableManager(through=NewsPageTag, blank=True)
class NewsIndexPage(Page):
def serve(self, request, *args, **kwargs):
context['tags'] = Tag.objects.all().distinct('taggit_taggeditem_items__tag')
return TemplateResponse(
request,
self.get_template(request, *args, **kwargs),
context
)
Я также пробовал:
from django.contrib.contenttypes.models import ContentType
# ...
def serve(self, request, *args, **kwargs):
news_content_type = ContentType.objects.get_for_model(NewsPage)
context['tags'] = Tag.objects.filter(
taggit_taggeditem_items__content_type=news_content_type
)
return TemplateResponse(
request,
self.get_template(request, *args, **kwargs),
context
)
который присваивает context['tags']
пустой набор
Мой шаблон:
{% if tags.all.count %}
{% for tag in tags.all %}
<a class="dropdown-item" href="?tag={{ tag.id }}">{{ tag }}</a>
{% endfor %}
{% endif %}
ПОМОЩЬ! Такое ощущение, что это не должно быть так сложно. Спасибо