Pol*_*Pol 1 python django django-models
我有一个数据库,其name列有数据
'Very big News'
'News'
'something else'
'New Nes'
'Fresh News'
'Something else'
Run Code Online (Sandbox Code Playgroud)
现在给出一串单词,如何找到name字段中是否包含给定字符串中的任何单词?
例如:
我有一个字符串'super very news'.我需要在我的数据库中查看我是否有任何记录,使该name字段包含'super'或'very'或'news'或'super very'或'very news'.
根据评论更新.请在此处查看查询集文档.
your_search_query = 'super very news'
qset = Q()
for term in your_search_query.split():
qset |= Q(name__contains=term)
matching_results = YourModel.objects.filter(qset)
Run Code Online (Sandbox Code Playgroud)
这创造了相当于:
matching_result = YourModel.objects.filter(Q(name__contains='super') |
Q(name__contains='very') |
Q(name__contains='news'))
Run Code Online (Sandbox Code Playgroud)
它在单个查询中生成(大致)以下SQL:
select * from your_model where name like '%super%' or name like '%very%' or name like '%news%'
Run Code Online (Sandbox Code Playgroud)