簡體   English   中英

如何在DJANGO 2.2上進行多個字符串查詢

[英]How to make multiple string queries on DJANGO 2.2

我想進行查詢,以在字段名中搜索包含所有單詞的所有行,這些行包含snames var中的某個單詞:

snames='john bush george robert'

我用以下代碼在SQL上執行此操作:

SELECT * FROM names.peoples 
WHERE `name` LIKE'%john%bush%george%robert%';

在django中:

snames='john bush george robert'
p = peoples.objects.all().filter(name__icontains=snames)

有可能在單個查詢中嗎?

您需要在列表中添加名稱,然后使用Q可以對name字段的值進行OR過濾:

sname = ['john', 'bush', 'george', 'robert']
condition = reduce(operator.or_, [Q(name__icontains=name) for name in sname])
p = Peoples.objects.filter(condition).distinct()

可能您不清楚條件行,因此下面是條件的示例輸出:

Q(name__icontains='john') OR Q(name__icontains='bush') OR Q(name__icontains='george') OR Q(name__icontains='rober')

請注意,當您要查詢模型的名稱為poeples.objects.filter ,請在代碼中使用poeples.objects.filter希望它是次要的,正確的是Poeples.objects.filter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM