Недавно я создал облако тегов на своем веб-сайте на платформе Wagtail, но у меня возникла проблема, когда появляются некоторые теги (называемые «Темы» на моем сайте), содержащие только частные статьи / страницы.
До сих пор я делал что-то вроде этого, чтобы получить количество статей в каждом теге и отфильтровать их, если их нет:
topics_with_articles = Topic.objects.annotate(num_articles=models.Count("articlepage")).filter(num_articles__gt=0)
filtered_topics = topics_with_articles.order_by("-num_articles").values("name", "slug", "num_articles")
И мои модели настроены так:
from modelcluster.models import ParentalManyToManyField, ParentalKey
from modelcluster.tags import ClusterTaggableManager
from taggit.models import Tag, TaggedItemBase
@register_snippet
class Topic(Tag):
class Meta:
ordering = ["slug"]
proxy = True
verbose_name = "Topic"
verbose_name_plural = "Topics"
class ArticleTopic(TaggedItemBase):
content_object = ParentalKey("ArticlePage", related_name="article_topics")
class ArticlePage(Page):
topics = ClusterTaggableManager(through="articles.ArticleTopic", blank=True)
Я не мог найти простое решение, чтобы заставить это работать, так как я могу это сделать?