代码之家  ›  专栏  ›  技术社区  ›  AlexH

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

  •  7
  • AlexH  · 技术社区  · 14 年前

    我对姜戈很陌生,大约一周后。

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

    我有一张多对多的桌子,用来存放喜欢或不喜欢的东西。在我呈现页面之前,我会将当前用户的所有喜欢和不喜欢的内容,以及我将要在页面上显示的内容都提取出来。

    当我呈现页面时,我会浏览我要显示的内容列表,然后一次打印一个。我想向用户展示他们喜欢哪些东西,哪些不喜欢。

    所以在我的django模板中,我有一个名为entry的对象。我还有两个对象列表,叫做喜欢和不喜欢。在我的django模板中,是否有任何方法可以确定条目是否是这两个列表的成员。

    我想我要找的是一个过滤器,在那里我可以说

    {% if entry|in:likes %}
    

    {% if likes|contains:entry %}
    

    我知道我可以向我的模型中添加一个方法,并分别检查每个条目,但这似乎需要大量的数据库。

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

    3 回复  |  直到 12 年前
        1
  •  0
  •   Luiz C.    14 年前

    here 。和他们在后备箱上使用的非常相似。”将其另存为Smart_if.py,保存在某个应用程序的templateTags文件夹中。然后一个简单的%加载智能if%用新的智能模板替换了无聊的内置Django%if%模板。”

        2
  •  14
  •   Denis Otkidach    12 年前

    如果你使用的是最新的django版本,那么

    {% if entry in likes %}
    

    Refer django docs

        3
  •  -1
  •   onkar Jon    12 年前

    如果您没有运行Trunk,那么以下其中一项应该可以工作:

    Filter:

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