如何在Django queryset中执行和条件?

2024-09-27 23:07:23 发布

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

我想编写一个与此SQL查询等效的Django查询:

SELECT * FROM user WHERE name LIKE '%danny%' AND name LIKE '%jack%' AND name LIKE '%peter%' ...

Django中,我有一个列表,例如:

^{pr2}$

如何构造Djagno queryset过滤器?在


Tags: anddjangonamefrom过滤器列表sqlwhere
1条回答
网友
1楼 · 发布于 2024-09-27 23:07:23

使用Q运算符:

queryargs = [Q(name__contains=i) for i in lst]
queryset = User.objects.filter(*queryargs)

更新

我已经回答了这个问题,但是你的第二个问题,关于如何获得组合

^{pr2}$

这应该是有效的:

from django.db.models import Q

qname = Q()
for i in lst:
    qname &= Q(name__contains=i)

qfamily = Q()
for i in lst:
    qfamily &= Q(family__contains=i)

queryset = Data.objects.filter(qname | qfamily)

相关问题 更多 >

    热门问题