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

Django模板{{item.get\u FOO\u display}}只使用jinja2而不使用Django

  •  0
  • matousc  · 技术社区  · 6 年前

    我用Django。我还使用独立的Jinja2从django模型构建电子邮件主体。

    在django模板中,这很简单,例如:

    {{ form.get_foo_display }}.
    

    但是,如果它在django模板之外,则不起作用。我使用jinja2的代码是:

    Trip participation:\t{{ item.get_event_trip_display }}
    

    哪里 item 是模型实例和 event_trip 是选择字段 {{ item.event_trip }} 工作正常)

    然而 get_event_trip_display

    Trip participation: <bound method curry.<locals>._curried of <Registration: John Doe>>
    

    已知解决方案:

    1. 使用 {% if ... %}

    2. 在Python代码中使用新属性附加实例:

      item.trip\u parictipation\u display=项目.获取出行参与度\u display()

    有没有更简单的方法直接在jinja2中调用函数(我有很多这样的领域)

    1 回复  |  直到 6 年前
        1
  •  2
  •   Daniel Roseman    6 年前

    get_event_trip_display 是一种方法。Django模板会自动调用方法,但是Jinja2模板不会。您需要显式地调用它:

    {{ item.get_event_trip_display() }}