我所拥有的用户下面的模型,我想所有的用户,像“黄”,但不喜欢“红”。

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'")

返回用户的相同的列表。我认为,这是测试如果任何最喜欢的颜色是所有从“红色”,而不是如果列表中不包含“红色”不同。

如何过滤只包含一个项目,而不是另一个?结果

有帮助吗?

解决方案

可以不筛选不存在项目。你的第二个查询查找大家的是,具有不“红”的项目在他们的名单“黄”,以及至少一个项目。

如果您的项目组是有限的,你可能想改变你的表现,包括“不”的条目 - 例如,“黄”,“不蓝”,“不红”。否则,你需要做Python代码过滤。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top