2010-03-11 61 views
6

我对django很新,大约一周。是否有可能,在django模板中,检查一个对象是否包含在列表中

我正在制作一个网站,用户输入东西,然后其他用户可以投票他们是否喜欢这些东西。我知道这并不新奇,但是学习一堆工具是一个很好的项目。

我有一个多对多的表来存储谁喜欢或不喜欢什么。在呈现页面之前,我将当前用户的所有好恶以及我要在页面上展示的东西一并提出。

当我渲染页面时,我会浏览我要展示的内容列表,并一次打印出一个。我想向用户展示他们喜欢的东西,以及他们不喜欢的东西。

所以在我的Django模板中,我有一个名为entry的对象。我也有两个名为喜欢和不喜欢的对象列表。有没有什么方法可以确定入口是否是我的django模板中的任一列表的成员。

我想我正在寻找的是一个过滤器,我可以这样说

{% if entry|in:likes %} 

{% if likes|contains:entry %} 

我知道我可以一个方法添加到我的模型和检查每个单独进入,但似乎是数据库密集型。

有没有更好的方法来思考这个问题?

回答

0

here。非常类似于他们在主干上使用的内容。 “将其另存为smart_if.py保存在其中一个应用程序的templatetags文件夹中,然后一个简单的{%load smart_if%}用新的智能替换掉无聊的内置Django {%if%}模板。”

+0

还没有尝试过,但它似乎是我所需要的。 – AlexH 2010-03-12 09:55:01

13

如果您正在使用最新版本的Django,那么它只是

{% if entry in likes %} 

Refer django docs

+0

我正在使用1.1.1。有没有升级的选项?什么时候开始生产?有人知道吗? – AlexH 2010-03-11 19:03:47

+1

有些人知道。以下是主页上的链接:http://www.djangoproject.com/weblog/2010/mar/09/django-1_2-release-schedule/ – 2010-03-11 19:08:20

-1

如果你没有运行一个行李箱下面的应工作:

Filter:

替换“if”标签,很大程度上是即将发布的1.2版本中new functionality的基础:

+0

建议tu在此包含解决方案,而不仅仅是指向它的链接。 – emi 2017-07-24 12:11:14

相关问题