我正在使用django-taggit
来标记三种不同类型的模型:
一切正常。
我现在正在尝试将所有可用标记列表相关添加到博客中,以便我可以在BlogIndex页面上显示它们。我得到的最远的是,感谢类似的SO问题:
from taggit.models import Tag
def blog_tags(self):
tags = Tag.objects.all()
return tags
然而,这为我提供了每个标签的列表,包括产品和事件标签。
如何将该标记列表过滤到博客?
编辑 |简化modely.py
:
class BlogPostTag(TaggedItemBase):
content_object = ParentalKey('BlogPost', related_name='tagged_items')
class BlogPost(Page):
# my fields
tags = ClusterTaggableManager(through=BlogPostTag, blank=True)
# Getting BlogPost-specific tags here is not difficult
class BlogIndex(Page):
# my fields
def blog_tags(self):
etc...
答案 0 :(得分:0)
如果标记直接放在您的Blog
对象上(我将在此处调用myBlog
)并且您想要获取所有这些标记,那么您可以执行以下操作:
myBlog.tags.all()
但是,这可能不是您想要的:请发布与您的模型相关的代码。
修改强>
我从代码中收集到的是,您使用自定义类BlogPostTag
标记您的博客帖子,该类继承TaggedItemBase
,这是一个类似于this的抽象类:
class TaggedItemBase(ItemBase):
tag = models.ForeignKey(Tag,
related_name="%(app_label)s_%(class)s_items", on_delete=models.CASCADE)
我无法测试它,因为没有足够的代码,但我认为您可以通过执行以下操作来获取博客帖子中的所有标记:
BlogPostTag.objects.all().values('tag')
让我们发布!谢谢: - )
答案 1 :(得分:0)
对于寻找这个问题答案的其他人,我找到了一个简单的解决方法:
BlogPost
这列出了与DispatchQueue.main.async {
self.collectionView?.reloadData()
}
模型关联的所有标签,按照最常用的次序排列。