是否可以在django模板中检查对象是否包含在列表中

时间:2010-03-11 18:06:41

标签: django

我对django很新,大约一个星期。

我正在创建一个用户输入内容的网站,然后其他用户可以投票决定他们是否喜欢这些内容。我知道它不是那么新颖,但是学习一堆工具是一个很好的项目。

我有一个多对多的表来存储谁喜欢或不喜欢什么。在我呈现页面之前,我将为当前用户提取所有喜欢和不喜欢的内容,以及我将要在页面上显示的内容。

当我渲染页面时,我会查看我要显示的内容列表,并逐个打印出来。我想向用户展示他们喜欢的东西,以及他们没有的东西。

所以在我的django模板中,我有一个名为entry的对象。我还有两个名为“不喜欢”的对象列表。有没有办法在我的django模板中确定条目是否是任何一个列表的成员。

我认为我正在寻找的是一个过滤器,我可以说像

{% if entry|in:likes %}

{% if likes|contains:entry %}

我知道我可以在模型中添加一个方法并单独检查每个条目,但这似乎是数据库密集型的。

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

3 个答案:

答案 0 :(得分:15)

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

{% if entry in likes %}

Refer django docs

答案 1 :(得分:0)

转到here。与他们在行李箱上使用的非常相似。 “将此保存为smart_if.py在您的某个应用的templatetags文件夹中。然后使用简单的{%load smart_if%}将新的智能模板替换为无聊的内置Django {%if%}模板。”

答案 2 :(得分:-1)

如果您没有运行主干,则应执行以下任一操作:

Filter:

替换“if”标签,主要是即将发布的1.2版本中new functionality的基础: