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)