按键查询模型 [英] Query for model by key
问题描述
我试图做的是向数据存储查询模型,其中的关键是不是我已有的对象的关键。这里有一些代码:
pre $ code $ class User(db.Model):
partner = db.SelfReferenceProperty()
def text_message(self,msg):
user = User.get_or_insert(msg.sender)
如果不是user.partner:
#user没有有一个合伙人,找到他们一个
#BUG:这一行返回'user'自己... :(
other = db.Query(User).filter('partner =',None).get ()
if other:
#连接用户
else:
#无人连接!
这个想法是找到另一个没有合伙人的 User
,这不是我们已经知道的用户。
我试过 filter('key!=,user.key())
, filter('__ key__!=,user.key())
和其他一些,并且没有任何东西返回没有的
filter('foo!=,user.key())
也不会返回任何结果, rd。
有一个非常简单的方法:检索两条记录,并筛选出用户自己的记录(如果存在的话) 。
def text_message(self,msg):
user = User.get_or_insert(msg.sender)
如果不是user.partner:
#用户没有伙伴,找到他们一个
other = db.Query(User).filter('partner =',None)。 fetch(2)
other = [u for other in u.key()!= user.key()]
if other:
#将用户连接到其他[0]
else:
#无人连接!
What I'm trying to do is query the datastore for a model where the key is not the key of an object I already have. Here's some code:
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!
The idea is to find another User
who doesn't have a partner, that isn't the user we already know.
I've tried filter('key !=, user.key())
, filter('__key__ !=, user.key())
and a couple others, and nothing returns another User
who doesn't have a partner.
filter('foo !=, user.key())
also returns nothing, for the record.
There's a really easy way around this: Retrieve two records, and filter out the user's own one, if it's present.
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!
这篇关于按键查询模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!