如何使用两个或多个列表进行查询集过滤?
How to queryset filter with two or more lists?
我想为我的模型制作一个包含两个或更多列表的过滤器
例如:
我正在尝试这样做
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'))
有什么想法吗?
Q 等同于 SQL 语言中的 OR
。如果你想找到 request__in=rq
和 area__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) + ')')
我想为我的模型制作一个包含两个或更多列表的过滤器
例如: 我正在尝试这样做
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'))
有什么想法吗?
Q 等同于 SQL 语言中的 OR
。如果你想找到 request__in=rq
和 area__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) + ')')