2012-10-15 98 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()]中的標籤'' –