我正在读这个问题
使用 args 和 kwargs 动态构建 Django 过滤器查询 https://stackoverflow.com/questions/8510057/constructing-django-filter-queries-dynamically-with-args-and-kwargs?rq=1
我无法了解该操作员的作用
filter(reduce(operator.or_, argument_list))
or this
filter(reduce(operator.and_, query_list))
filter
是Django Model Manager的常规方法,所以没什么好解释的。
reduce
是一个内置函数,类似于下面的代码:
def reduce(func, items):
result = items.pop()
for item in items:
result = func(result, item)
return result
Where func
是用户定义的函数。
operator.or_
是一个Python标准库函数,它包装了or
操作员。它类似于以下代码:
def or_(a, b):
return a | b
例如:
reduce(operator.or_, [False, False, True])
将返回True
.
在您的示例上下文中,or
和and
运算符已重载,因此它应该返回一个由较小部分组成的新查询,所有这些部分都由or
or and
操作员。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)