代码之家  ›  专栏  ›  技术社区  ›  jbochi

如何筛选不包含项的StringListProperty?

  •  1
  • jbochi  · 技术社区  · 15 年前

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

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

    返回相同的用户列表。我相信这是在测试任何一种最喜欢的颜色是否不同于“红色”,而不是如果列表中根本不包含“红色”。

    如何仅筛选包含项而不包含另一项的结果?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Nick Johnson    15 年前

    无法筛选缺少的项目。第二个查询查找列表中包含“黄色”项的每个人,以及至少一个非“红色”项。

    如果您的项目集是有限的,您可能希望更改您的表示,以包括“不”条目-例如,“黄色”、“非蓝色”、“非红色”。否则,您需要在Python代码中进行过滤。