按键查询模型

时间:2010-03-26 03:39:30

标签: python google-app-engine google-cloud-datastore

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

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())和其他几个人,没有任何人返回没有合作伙伴的另一个User。  <{1}}也没有返回任何记录。

1 个答案:

答案 0 :(得分:4)

有一个非常简单的方法:检索两条记录,并过滤掉用户自己的记录(如果存在)。

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!