在ModelAdmin.readonly_fields方法中使用模板标记

时间:2018-12-11 13:13:22

标签: django django-templates django-admin

我使用这种模式:

class PersonAdmin(admin.ModelAdmin):
    readonly_fields = ('address_report',)

    def address_report(self, instance):
        return format_html(...)

来源:docs about readonly_fields

现在,我想在Python方法address_report()中使用自定义模板标签。

调用它的最好方法是什么?

我试图直接调用我的templatetag,但这只会返回一个字典,而不是html。

1 个答案:

答案 0 :(得分:3)

我认为您必须从字符串创建模板。这样,您可以使用任何所需的模板标签或变量。

示例:

from django.template import Template, Context

def address_report(...):
    # create template
    t = Template("""
       {% load custom_tag_module %}
        <p>
            Hello, {{ name }}! <br>
            {% custom_tag %}
        </p>
        """)

    # create context
    c = Context({'name': 'World'})

    # render template, mark safe and return
    return mark_safe(t.render(c))