如何使用django在一个查询中实现逻辑AND和OR运算符
我希望在Django查询中实现AND和OR逻辑,但在检查了大量帖子和搜索后,我发现我无法在同一个查询过滤器中实现AND和OR逻辑 这就是我想要实现的目标 我想获取具有关键ABC和值Value1或Values2或Values3以及关键CDE和值Value4的记录 我使用的是如何使用django在一个查询中实现逻辑AND和OR运算符,django,python-3.x,mongoengine,Django,Python 3.x,Mongoengine,我希望在Django查询中实现AND和OR逻辑,但在检查了大量帖子和搜索后,我发现我无法在同一个查询过滤器中实现AND和OR逻辑 这就是我想要实现的目标 我想获取具有关键ABC和值Value1或Values2或Values3以及关键CDE和值Value4的记录 我使用的是python3.6、djang1.11、mongoengine和MongoDB filter = [ { "Key": "ABC", "Values": ["Value1", "Value2", "Value3"]}, { "
python3.6、djang1.11、mongoengine和MongoDB
filter = [ { "Key": "ABC", "Values": ["Value1", "Value2", "Value3"]}, { "Key": "CDE", "Values": ["Value4"]} ]
答复:
[
{
"_id" : ObjectId("5ebd29286310619f046ba866"),
"account_id" : "12",
"key" : "ABC",
"Value" : "Value1"
}
{
"_id" : ObjectId("5ebd29286310619f046ba866"),
"account_id" : "12",
"key" : "ABC",
"Value" : "Value2"
}
{
"_id" : ObjectId("5ebd29286310619f046ba866"),
"account_id" : "12",
"key" : "ABC",
"Value" : "Value3"
}
{
"_id" : ObjectId("5ebd29286310619f046ba866"),
"account_id" : "12",
"key" : "CDE",
"Value" : "Value4"
}
]
这是我已经尝试过的,但出现错误mongoengine.errors.InvalidQueryError:无法解析字段“key”
您可以使用
Q
对象,如中所述。例如:
Poll.objects.get(
Q(问题从谁开始),
Q(发布日期=日期(2005,5,2))| Q(发布日期=日期(2005,5,6))
)
该代码相当于:
SELECT * from polls WHERE question LIKE 'Who%'
AND (pub_date = '2005-05-02' OR pub_date = '2005-05-06')
您好@Deniz感谢您的回复,我尝试过这个,但我遇到了一个错误。我添加了我尝试过的代码,请注意,我使用的是mongoengine Q和Django QI think是关于“Key”的大写字母“K”,您可以尝试使用
Q(Key_u-exact='CDE')
?但是我有字段Key和Key,我也尝试过这个,正如错误所示,它不起作用,关键字段不匹配。可能您的模型定义和数据库方案不一样。它可能会导致此错误。这个答案可能会帮助你:
SELECT * from polls WHERE question LIKE 'Who%'
AND (pub_date = '2005-05-02' OR pub_date = '2005-05-06')