从taggit获取所有标签

时间:2012-10-15 10:56:56

标签: python django django-models django-taggit

如何从django-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()

3 个答案:

答案 0 :(得分:17)

您可以使用all()获取数据库中的所有代码:

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

如果您需要完整的解决方案,请查看django-taggit-templatetags。它提供了几个templatetags,包括一个用于标记列表,用于将各种taggit API直接暴露给模板。

答案 1 :(得分:5)

目前维护的fork支持更新版本的django: https://github.com/fizista/django-taggit-templatetags2

django-taggit-templatetags已维持多年。

答案 2 :(得分:0)

我知道这是一个老问题...但是我是Django新手,在寻找一种用所有标记选项填充Ajax下拉列表的方法时发现了这个问题。我想出了使用data$expense <- as.numeric(as.character(data$expense)) 的方法,并希望在这里为其他人提供一个更完整的解决方案(OP也可以用响应填充侧边栏,或者对响应进行任何其他操作)。

这会添加一个api端点djangorestframework,因此您不仅可以导航到tag来查看它们,还可以获得适用于Ajax的JSON响应(因此,假定您已安装/tag/使用中。)

serlializers.py

djangorestframework

views.py

from taggit.models import Tag
class MyTagSerializer(serializers.ModelSerializer):
    class Meta:
        model = Tag
        fields = ['name', 'slug']

urls.py

from taggit.models import Tag
class TagViewSet(viewsets.ModelViewSet):
    """
    Not using taggit_serializer.serializers.TaggitSerializer because that's for listing
    tags for an instance of a model
    """
    queryset = Tag.objects.all().order_by('name')
    serializer_class = MyTagSerializer

而且,如果您需要ajax:

router.register(r'tag', TagViewSet)