python - 使用 args 和 kwargs 动态构建 Django 过滤器查询

标签 python django

我正在动态构建一些 Django 过滤器查询,using this example :

kwargs = { 'deleted_datetime__isnull': True }
args = ( Q( title__icontains = 'Foo' ) | Q( title__icontains = 'Bar' ) )
entries = Entry.objects.filter( *args, **kwargs )

我只是不确定如何构造 args 的条目。假设我有这个数组:

strings = ['Foo', 'Bar']

我如何从那里到达:

args = ( Q( title__icontains = 'Foo' ) | Q( title__icontains = 'Bar' ) 

我能得到的最接近的是:

for s in strings:
    q_construct = Q( title__icontains = %s) % s
    args.append(s)

但是我不知道如何设置|条件。

最佳答案

你有 Q 类对象的列表,

args_list = [Q1,Q2,Q3]   # Q1 = Q(title__icontains='Foo') or Q1 = Q(**{'title':'value'})  
args = Q()  #defining args as empty Q class object to handle empty args_list
for each_args in args_list :
    args = args | each_args

query_set= query_set.filter(*(args,) ) # will excute, query_set.filter(Q1 | Q2 | Q3)
# comma , in last after args is mandatory to pass as args here

关于python - 使用 args 和 kwargs 动态构建 Django 过滤器查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8510057/

相关文章:

django - 从 Django 应用程序添加 URLS

django - 向 Wagtail 仪表板添加按钮

python - Flask API 类型错误 : Object of type 'Response' is not JSON serializable

使用 AjaxUpload 的 Python 图片上传

python - Pandas 读取 csv 失败

sql - 使用 Django 时神秘的 PostgreSQL 日志条目

python - 如何在 Django 中排队请求?

python - 如何判断 Pyramid/python 是否加载了正确的 .egg?

python - 从其他 numpy 数组创建 numpy 数组

python - 从Django ORM中高效提取大量数据