【问题标题】:Django Templating: how to access properties of the first item in a listDjango模板:如何访问列表中第一项的属性
【发布时间】:2010-12-01 12:59:18
【问题描述】:

很简单。我有一个要传递给 Django 模板的 Python 列表。

我可以使用

专门访问此列表中的第一项
{{ thelist|first }}

但是,我还想访问该项目的属性...理想情况下,您会认为它看起来像这样:

{{ thelist|first.propertyName }}

可惜,它没有。

是否有任何模板解决方案,或者我只是要发现自己传递了一个额外的模板变量...

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    您可以通过其索引号访问列表中的任何项目。在模板中,这与任何其他属性查找相同:

    {{ thelist.0.propertyName }}
    

    【讨论】:

    • 嗯。但是,这不适用于 inline_admin_formset。我猜迭代器不能按我的预期工作。
    • 嗨丹尼尔,你能检查我与模板/视图相关的问题stackoverflow.com/questions/34791375/… 吗?
    • 这比for 循环遍历每个错误消息要好得多。谢谢!
    • 最后一项是thelist.-1.propertyName
    • 不,不幸的是,这不起作用,Django 无法解析它。正如马克在另一个答案中建议的那样,您需要使用with 标记和|last
    【解决方案2】:

    您可以将with 模板标签与first 模板过滤器结合起来访问该属性。

    {% with thelist|first as first_object %}
        {{ first_object.propertyname }}
    {% endwith %}
    

    【讨论】:

    • 对于字典,首先为键/值对返回一个元组,这有点难看,但我添加了另一个 with 语句来获取值。 {% with thelist|first as first_object %}{% with first_object.1 as object %}{{ object }}{% endwith %}{% endwith %}
    • stackoverflow.com/users/61539/mark-lavin 你拯救了我的一天
    【解决方案3】:

    如果您尝试访问多对多字段,请记得添加all,这样它看起来就像object.m2m_field.all.0.item_property

    【讨论】:

    • 如果你提到“所有”,你可以给你+10,你救了我的一天;)
    【解决方案4】:

    访问提供给 django 模板的对象列表中的 ManyToManyField 属性的可能更清晰的答案/语法如下所示:

    {{ object_list.0.m2m_fieldname.all.0.item_property }}
    

    【讨论】:

      猜你喜欢
      • 2018-01-17
      • 2011-04-19
      • 2015-05-11
      • 2014-02-16
      • 2013-06-18
      • 2013-07-23
      • 2012-06-05
      • 1970-01-01
      • 2019-04-16
      相关资源
      最近更新 更多