2

我已经设置了 django-taggit 并且工作正常,所有标签都列在管理员标签下,我可以通过管理员和表单添加标签。

我在模板中列出标签时遇到了真正的麻烦(基本上我想要一个包含标题、url 和标签的所有对象的长列表。

目前,我有一个名为 return tags 的方法附加到模型,它应该返回一个标签列表供我在模板中迭代。嗯……这是理论……

模型.py

class DefaultResource(models.Model):
#
# This class is the parent class for all resources in the media manager
#
title = models.CharField(max_length=100)
created_date = models.DateTimeField(auto_now_add=True, auto_now=False)
edited_date =  models.DateTimeField(auto_now_add=False,auto_now=True)
level = models.ManyToManyField(AssoeLevel)
agebracket= models.ManyToManyField(AgeBracket)
pathway= models.ManyToManyField(AssoePathway)
tags = TaggableManager()
slug = models.SlugField(max_length=100,editable=False,blank=True)
updownvotes = RatingField(can_change_vote=True)
views = models.DecimalField(max_digits=20,decimal_places=2,default=0,blank=True)
score = models.DecimalField(max_digits=20,decimal_places=4,default=0,blank=True)
icon = models.CharField(max_length=254,editable=False,blank=True)

def return_tags(self):
    taglist = self.tags.names()
    return taglist

视图.py

def index(request):
context = RequestContext(request)
default_resource_list = DefaultResource.objects.order_by('-score')
context_dict = {'default_resource_list':default_resource_list}
return render_to_response('mediamanager/index.html', context_dict, context)

索引.html

{% for resource in default_resource_list %}

    {% for tag in resource.return_tags %}

    {{ tag }}

    {% endfor %}

{% endfor %}

目前这是返回一个空列表。

我也尝试将以下内容放入模板中

{% for tag in resource.tags.all %}
{{tag.name}}
{% endfor %}

但这也返回一个空列表

4

2 回答 2

2

我仍在试图弄清楚这一点,因为我想要一个所有标签的列表作为包含该标签的帖子的链接。我只能通过使用 django-taggit 和 django-taggit-templatetags 来做到这一点。

根据您正在运行的 Django 版本,请尝试以下操作:

  • 对于早期版本(1.5 之前)

Django-taggit-templatetags

  • 对于 1.5 或更高版本(我正在运行 1.10,效果很好)

Django-taggit-templatetags2

接下来我将尝试 Django 标记,因为文档更加完整。

对于 Jon Clements,我是 StackOverflow 的新手,不知道为什么我的答案被删除了。如果您对此有更好的解决方案,请告知。

于 2017-03-12T21:41:20.313 回答
1

这适用于django-taggit 1.3.0

{% for tag in posts.tags.all %}
{{ tag.name }}   
{% endfor %}
于 2020-11-08T09:43:30.763 回答