仅使用jinja2而没有Django

时间:2018-09-28 07:30:18

标签: python django jinja2

我使用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_parictipation_display = item.get_trip_participation_display()

我的问题:

是否有更简单的方法可以直接在jinja2中调用该函数? (我有很多类似的字段)

1 个答案:

答案 0 :(得分:2)

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

{{ item.get_event_trip_display() }}