Python 德扬戈。Q对象动态生成

Python 德扬戈。Q对象动态生成,python,django,django-q,Python,Django,Django Q,模型字段有一个过滤器 queryset = queryset.filter( Q(title__icontains=search_text) | Q(description__icontains=search_text) | Q(name_icontains=search_text) ) 如何根据情况生成块 Qtitle\uuu icontains=搜索\u文本| Qdescription\u iconta

模型字段有一个过滤器

queryset = queryset.filter(
            Q(title__icontains=search_text) |
            Q(description__icontains=search_text) |
            Q(name_icontains=search_text)
        )
如何根据情况生成块

Qtitle\uuu icontains=搜索\u文本| Qdescription\u icontains=搜索\u文本| Qname\u icontains=搜索\u文本

例如,在一种情况下,过滤器必须是这样的

Qdescription\u icontains=搜索\u文本| Qname\u icontains=搜索\u文本

Qtitle\uuu icontains=搜索\u文本| Qdescription__icontains=搜索_文本|

Qtitle\uuu icontains=搜索\u文本

我可以使用字典生成Q对象 比如说

search_text = 'somthing text'
fields_name = ['title', 'description', 'name']

 queries = [ Q(**{field+'__icontains': search_text}) for field in fields_name]  
但这是怎么回事

[,, , ]

粘贴到过滤器中并使用您可以使用的或分隔符

>>>[Q(**{field +'__contains': search_text}) for field in fields_name]
现在如果你想做一个OR

这和

Q(title__icontains=search_text) |
Q(description__icontains=search_text)|
Q(name_icontains=search_text)

你需要所谓的解析树。修正问题。这就是我需要的
Q(title__icontains=search_text) |
Q(description__icontains=search_text)|
Q(name_icontains=search_text)