自定义模板过滤和查询

时间:2021-07-27 02:03:30

标签: django

我正在尝试使用模板过滤器获取所有在职员工,但运气不佳。我想知道你是否知道为什么。

models.py

class Employee(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    active = models.BooleanField(default=False)

我的模板过滤器如下:

@register.filter
def active_employees(model_instances):
    return model_instances.filter(active=False)

模板.html

    {% if request.user.employee.all|active_employees|length > 0 %} 

        There is an active employee

    {% endif %}

我得到的错误如下:

Invalid filter: 'actual_employees'

1 个答案:

答案 0 :(得分:0)

可以帮助您调试问题的几点:

根据 django 文档,您的自定义标签和过滤器将位于 templatetags 目录内的模块中。模块文件的名称是您稍后将用于加载标签的名称,因此请注意选择一个不会与其他应用中的自定义标签和过滤器冲突的名称。

例如,如果您的自定义标签/过滤器位于名为 poll_extras.py 的文件中,您的应用布局可能如下所示:

polls/
init.py
models.py
templatetags/
init.py
poll_extras.py
views.py

检查您的项目结构。

在您的模板中,您将使用以下内容加载自定义标签库:

{% load poll_extras %}

此外,此行检查逻辑是否应该是 True 或 False,因为我认为 active=True 对于活跃员工来说是正确的,条件休息取决于您的实施。

return model_instances.filter(active=False)

注意 django 抱怨的名称是 Invalid filter: 'actual_employees' 这在您的过滤器定义中不存在请交叉检查它是否存在于您的 html 中或不与定义的过滤器名称相同active_employees

相关问题