代码之家  ›  专栏  ›  技术社区  ›  Jason Hall

按键查询模型

  •  4
  • Jason Hall  · 技术社区  · 16 年前

    我要做的是查询一个模型的数据存储,其中的键是 我已经拥有的对象的键。下面是一些代码:

    class User(db.Model):
        partner = db.SelfReferenceProperty()
    
    def text_message(self, msg):
        user = User.get_or_insert(msg.sender)
    
        if not user.partner:
            # user doesn't have a partner, find them one
            # BUG: this line returns 'user' himself... :(
            other = db.Query(User).filter('partner =', None).get()
            if other:
                # connect users
            else:
                # no one to connect to!
    

    想法是找到另一个 User 谁没有合作伙伴,那不是我们已经知道的用户。

    我试过了 filter('key !=, user.key()) , filter('__key__ !=, user.key()) 还有其他一些,没有什么能回报其他的。 用户 没有伴侣的人。 filter('foo !=, user.key()) 也不返回任何记录。

    1 回复  |  直到 16 年前
        1
  •  4
  •   Nick Johnson    16 年前

    有一种非常简单的方法可以解决这个问题:检索两个记录,并过滤掉用户自己的记录(如果有)。

    def text_message(self, msg):
        user = User.get_or_insert(msg.sender)
    
        if not user.partner:
            # user doesn't have a partner, find them one
            other = db.Query(User).filter('partner =', None).fetch(2)
            other = [u for u in other if u.key() != user.key()]
            if other:
                # connect user with other[0]
            else:
                # no one to connect to!