[我希望在Django查询中实现AND和OR逻辑,但是在检查了很多帖子并进行搜索后,我发现我无法在同一查询过滤器中实现AND-OR逻辑。
这是我想要实现的目标
我想获取具有键ABC AND值Value1或Values2或Values3 AND键CDE AND值Value4的记录>]
我正在使用python3.6, django1.11, mongoengine, and MongoDB
filter = [ { "Key": "ABC", "Values": ["Value1", "Value2", "Value3"]}, { "Key": "CDE", "Values": ["Value4"]} ]
响应:
[ { "_id" : ObjectId("5ebd29286310619f046ba866"), "linked_account_id" : "135566327975", "payer_account_id" : "135566327975", "key" : "ABC", "Value" : "Value1" } { "_id" : ObjectId("5ebd29286310619f046ba866"), "linked_account_id" : "135566327975", "payer_account_id" : "135566327975", "key" : "ABC", "Value" : "Value2" } { "_id" : ObjectId("5ebd29286310619f046ba866"), "linked_account_id" : "135566327975", "payer_account_id" : "135566327975", "key" : "ABC", "Value" : "Value3" } { "_id" : ObjectId("5ebd29286310619f046ba866"), "linked_account_id" : "135566327975", "payer_account_id" : "135566327975", "key" : "CDE", "Value" : "Value4" } ]
这是我已经尝试过但遇到的错误mongoengine.errors.InvalidQueryError:无法解析字段“ key”
from mongoengine.queryset.visitor import Q
records = MyModel.objects.get(Q(key__exact='ABC'),
Q(Value__exact='Value1') | Q(Value__exact='Value2') | Q(Value__exact='Value3', Q(key__exact='CDE'), Q(Value__exact='Value4')))
我希望在Django查询中实现AND和OR逻辑,但是在检查了很多帖子并进行搜索后,我发现我无法在同一查询过滤器中实现AND-OR逻辑。这就是我...
您可以使用Q
中提到的docs对象。例如: