如何在DJANGO 2.2上进行多字符串查询

2024-05-18 18:22:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想进行一个查询,在snamesvar中包含某个单词的字段名所有行上搜索我的表peoples:

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)

在单个查询中是否可能


Tags: 代码namefromsqljohn单词selectrobert
1条回答
网友
1楼 · 发布于 2024-05-18 18:22:27

您需要在列表中添加名称,然后使用Q可以OR筛选name字段的值:

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')

请注意,当您想要查询模型的名称时,它的名称是capital。您在代码中使用poeples.objects.filter希望它是hypo,正确的名称是Poeples.objects.filter

相关问题 更多 >

    热门问题