我想做的是在数据存储中查询一个模型,其中的键不是我已经拥有的对象的键。这是一些代码:
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
。
filter('foo !=, user.key())
也没有返回任何内容,以供记录。
最佳答案
有一个非常简单的方法解决这个问题:检索两条记录,并过滤掉用户自己的记录(如果存在)。
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!
关于python - 按键查询模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2521012/