2012-10-15 100 views
8

如何从django-taggit获取所有(唯一)标签?我想在侧栏中显示所有标签。 目前我能够获取特定帖子的所有标签,但现在我需要获取整个博客中的所有唯一标签。获取taggit的所有标签

代码models.py:

from django.db import models 
from taggit.managers import TaggableManager 

# Create your models here. 
class Post(models.Model): 
    title = models.CharField(max_length=100) 
    body = models.TextField() 
    created = models.DateTimeField() 
    tags = TaggableManager() 

回答

15

您可以使用all()把所有的标签在数据库中:

from taggit.models import Tag 
tags = Tag.objects.all() 

如果你需要一个完整的解决方案,看看django-taggit-templatetags。它提供了多个templatetags,其中包括一个用于标记列表的API,以将各种taggit API直接公开给模板。

+0

谢谢。我应该在Post中添加“tags = Tag.objects.all()”吗?以及如何显示它? – Robby

+0

你的意思是对于一篇文章,即post = Post.objects.get(pk = 1)?或所有帖子(Post.objects.all())? – 2012-10-15 12:37:00

+0

@Vino不,你不应该把它添加到你的'Post'模型。编辑您想要显示边栏的当前视图,并将标签列表传递给您的模板。 'Tag.objects.all()'是通过Django ORM检索对象的标准方法。查看[documentation](https://docs.djangoproject.com/en/dev/topics/db/queries/#retrieving-objects)以获取更多详细信息。如果您只需要标签名称,请使用list comprehension:'tag_names = [Tag.objects.all()]中的标签'' –