如何使用两个或多个列表查询设置筛选器?

2024-06-01 14:20:34 发布

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

我想为我的模型制作一个包含两个或更多列表的过滤器

例如: 我正试着这样做

from django.db.models import Q

rq = ['a', 'b', 'c', 'd', 'e'...]

transact = Transact.objects.filter( Q(request__in=rq) | Q(area__in=rq))

但是它不起作用,只需要第二个选项,在本例中是area

类似的,但是有列表

Transact.objects.filter(Q(request='c')| Q(area='d'))

有什么想法吗?你知道吗


Tags: djangoinfrom模型import过滤器列表db
1条回答
网友
1楼 · 发布于 2024-06-01 14:20:34

Q等价于SQL语言中的OR。如果您想要找到request__in=rqarea__in=rq的交集值,您应该使用与AND子句等价的普通过滤机制。你知道吗

rq = ['a', 'b', 'c', 'd', 'e'...]

transact = Transact.objects.filter(request__in=rq,area__in=rq)

编辑:不使用Q(因为这不是您所要求的解决方案),您可以使用以下方法:

rq = ['a', 'b', 'c', 'd', 'e'...]
result = Transact.objects.filter(request__iregex=r'(' + '|'.join(rq) + ')', area__iregex=r'(' + '|'.join(rq) + ')')

相关问题 更多 >