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