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 - 如何显示与每条记录相关的标签的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 CloudKit 仪表板左栏中每条记录的显示内容?
如何将 App Shell 与每页不同的 Flyout 项目一起使用