Django-Taggit |获取所有标签,但仅与博客相关
Django-Taggit | Getting ALL tags, but only related to blog
我正在使用 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...
如果标签直接放在您的 Blog
对象上(我将在此处调用 myBlog
)并且您想获取所有这些标签,您可以执行以下操作:
myBlog.tags.all()
但是,这可能不是您要查找的内容:请执行 post 与您的模型相关的代码。
编辑。
我从代码中收集到的是,您使用继承 TaggedItemBase
的自定义 class BlogPostTag
标记您的博客 post,抽象 class 看起来像 this :
class TaggedItemBase(ItemBase):
tag = models.ForeignKey(Tag,
related_name="%(app_label)s_%(class)s_items", on_delete=models.CASCADE)
我无法对其进行测试,因为没有足够的代码,但我认为您可以通过执行以下操作来获取博客 posts 上的所有标签:
BlogPostTag.objects.all().values('tag')
让我们 posted!谢谢:-)
对于寻找此问题答案的其他人,我找到了一个简单的解决方法:
def blog_tags(self):
tags = BlogPost.tags.most_common()
return tags
这列出了与 BlogPost
模型关联的所有标签,按最常用到最不常用的顺序排列。
我正在使用 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...
如果标签直接放在您的 Blog
对象上(我将在此处调用 myBlog
)并且您想获取所有这些标签,您可以执行以下操作:
myBlog.tags.all()
但是,这可能不是您要查找的内容:请执行 post 与您的模型相关的代码。
编辑。
我从代码中收集到的是,您使用继承 TaggedItemBase
的自定义 class BlogPostTag
标记您的博客 post,抽象 class 看起来像 this :
class TaggedItemBase(ItemBase):
tag = models.ForeignKey(Tag,
related_name="%(app_label)s_%(class)s_items", on_delete=models.CASCADE)
我无法对其进行测试,因为没有足够的代码,但我认为您可以通过执行以下操作来获取博客 posts 上的所有标签:
BlogPostTag.objects.all().values('tag')
让我们 posted!谢谢:-)
对于寻找此问题答案的其他人,我找到了一个简单的解决方法:
def blog_tags(self):
tags = BlogPost.tags.most_common()
return tags
这列出了与 BlogPost
模型关联的所有标签,按最常用到最不常用的顺序排列。