我要做的是查询数据存储区中的模型,其中键不是我已经拥有的对象的键。这是一些代码:
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}}也没有返回任何记录。
答案 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!