django模板自定义过滤器

时间:2020-03-24 06:22:38

标签: django django-templates django-template-filters

我对django相当陌生,我相信这是django模板相关的问题。我有一个项目模板,其中有一个特定值,即{{tenant_name}},该值告诉租户名称。我已经使用for循环找出所有可以正常工作的租户名称。

但是,所有租户下面都有单元,当我尝试使用for循环显示每个租户的单元时,它将所有单元循环到所有租户,这不是我想要的。注意:在这种情况下,由于用户还没有租户,因此无法使用self.tenant。

我尝试使用自定义过滤器来解决此问题,方法是将其注册并加载到模板中,然后像这样进行过滤:{{tenant_name | filter_units}},但是由于某些原因,这似乎不起作用。我的问题是:是否可以从模板中将tenant_name提取到过滤器,使用过滤器中的值搜索单位并将其返回到模板?如果是这样,您能告诉我如何?如果不可能,是否有更好的方法来实现?

先谢谢了。

编辑:到目前为止,我已经尝试过的一些代码:

过滤器:(注意:get_accepted_list是导入的函数,用于查找单位,并且可以使用)

from tenant.api import get_accepted_list
from django import template
register = template.Library()

@register.filter(name='filter_units')
def find_tenant_units(request):
    tenant = getattr(request, 'tenant_name', None)
    return get_accepted_list(tenant_name=tenant).order_by('tenant_name', 'id')

模板的一部分:

{% load filter_units %}

    {% for unit in units %}
    {{ unit.tenant_name|filter_units }}


    {% endfor %}

0 个答案:

没有答案
相关问题