如何在 Django 自定义过滤器中有两个参数

How to have two arguments in a django custom filter

我正在尝试操纵两个对象进行计算,但出现错误:“过滤器无效”

在 html 前端我有一个嵌套循环对象:单位和人如下:

{{units|myFilter:person}}

其中单位有多个对象,而人只有一个。

我的过滤器定义为:

def myFilter(units,person):
    n = 0
    for i in units:
        if i.name == person.name:
            n = n + 1
    return n

但是它不起作用,请问有什么想法或建议吗?

您可以注册一个 simple_tag 函数,它接受任意数量的位置参数或关键字参数;

from django import template

register = template.Library()

@register.simple_tag
def my_tag(a, b):
    print(a, b)

    return 'What you need'

这是在您的模板中使用它的方法;

{% my_tag 123 "abcd" %}

这是文档; https://docs.djangoproject.com/en/1.8/howto/custom-template-tags/#simple-tags