我想使用Django ORM执行OR查询。我提到了这个答案,它很适合我的需求。
我有一个整数列表,它是动态生成的。这些整数表示特定表中的用户ID。该表还具有日期字段。我想查询给定日期列表中所有用户ID的数据库。
例如:从下表中,我想要记录用户ID 2和3的日期为2015-02-28
id | date
---------------
1 | 2015-02-23
1 | 2015-02-25
1 | 2015-02-28
2 | 2015-02-28
2 | 2015-03-01
3 | 2015-02-28
我无法弄清楚以下哪两个最适合我的用例:
Table.objects.filter(reduce(lambda x, y: (x | y) & Q(date=datetime.date(2015, 2, 28)), [Q(user_id=i) for i in ids])
或者
Table.objects.filter(reduce(lambda x, y: (x | y), [Q(user_id=i) for i in ids]) & Q(date=datetime.date(2015, 2, 28))
目前,以上两种方法都产生相似的输出。没有lambda
,下面的查询将适合我的需要:
Table.objects.filter(Q(user_id=3) & Q(date=datetime.date(2015, 2, 28))| Q(user_id=2) & Q(date=datetime.date(2015, 2, 28)))
我觉得你并不需要reduce
和Q
这里的对象,你可以做:
Table.objects.filter(
user_id__in=[2,3],
date=datetime.date(2015, 2, 28),
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句