我有以下用户模型,我想让所有喜欢'黄色'的用户,但不喜欢'红色'。
class User(db.Model):
name = db.StringProperty(required=True)
favorite_colors = db.StringListProperty(required=True)
这样做(所有至少有一个喜欢的颜色'黄色'的用户都会被退回):
results = db.GqlQuery(
"SELECT * FROM User "
"WHERE favorite_colors = 'yellow'")
但这不符合我的预期:
results = db.GqlQuery(
"SELECT * FROM User "
"WHERE favorite_colors = 'yellow' "
"and favorite_colors != 'red'")
返回相同的用户列表。我相信它正在测试是否有任何喜欢的颜色与'红色'不同而不是如果列表根本不包含'红色'。
如何仅过滤包含项目而不是其他项目的结果?
答案 0 :(得分:1)
您无法过滤缺少商品。您的第二个查询会查找列表中包含“黄色”项目的所有人,以及至少一个非“红色”项目。
如果您的项目集有限,您可能希望更改您的表示以包括“非”条目 - 例如,“黄色”,“不是蓝色”,“不是红色”。否则,您需要在Python代码中进行过滤。