django-taggit - 如何显示与每条记录相关的标签

Posted

技术标签:

【中文标题】django-taggit - 如何显示与每条记录相关的标签【英文标题】:django-taggit - how do I display the tags related to each record 【发布时间】:2011-09-10 01:09:34 【问题描述】:

我在我的一个项目中使用django-taggit,我能够保存标签并将其与特定记录联系起来。现在的问题是如何显示与每条记录相关的标签?​​

例如,在我的页面上,我想显示一条包含标题和内容的记录,然后在它下面显示与该记录关联的标签。

views.py 和 mytemplate.html 中有什么内容?真实的例子将不胜感激。

【问题讨论】:

【参考方案1】:

models.py

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

class MyObject(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()

    tags = TaggableManager()

views.py

from django.views.generic import simple

def show_object(request):
    """ View all objects """
    return simple.direct_to_template(request,
        template="folder/template.html",
        extra_context=
            'objects':MyObject.objects.all(),
        ) 

template.html

% for object in objects %
    <h2> object.title </h2>
    <p> object.content </p>
    <ul>
        % for tag in object.tags.all %
            <li>  tag.name  </li>
        % endfor %
    </ul>
% endfor %

【讨论】:

这将为您拥有的每个对象创建一个额外的数据库查询。如果你有很多对象,那真的会减慢速度。我遇到了这个问题,正在寻找解决方案。 我回复@teewuane 有点晚了,但你是对的。可以通过使用preselect_related预先预取标签来减少它 from django.views.generic import simple 不适合我。这个模块被弃用了吗?【参考方案2】:

如果你赶时间也可以试试:

context_name.tags.all|join:", "

【讨论】:

这正是我所需要的。

以上是关于django-taggit - 如何显示与每条记录相关的标签的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中优化我的查询?

如何更改 CloudKit 仪表板左栏中每条记录的显示内容?

如何将 App Shell 与每页不同的 Flyout 项目一起使用

如何将`where`条件应用于每条记录

MS Access 2013 - 根据文本框中的值过滤列表框中的值

运行带有指向另一个查询的链接的查询。