我为运行python 2.7的Google App Engine构建了一个iOS应用后端。当我创建对象时,我希望后端为其提供一个ID,所有客户端都可以使用该ID作为要查询的标识符。我使用的这个方法涉及两个put,基本上只是使用,因为我使用db而不是ndb。是否有更好的方法来插入对象并为其提供易于访问的整数ID?
class Player(ndb.Model):
playerID = ndb.IntegerProperty()
username = db.StringProperty()
class createUserWithUsername(webapp2.RequestHandler):
def get(self):
username = self.request.get('username')
playerArr = Player.query(Player._properties["username"] == username).fetch(1)
if len(playerArr) > 0:
self.error(500)
else:
newPlayer = Player()
newPlayer.username = username
key = newPlayer.put()
newPlayer.playerID = key.id()
newPlayer.put()
# returning player as dict to client
答案 0 :(得分:0)
为什么需要查询ID然后将其另存为单独的属性?为什么不直接使用它来获得播放器?
player_key = ndb.Key(Player, id)
player = player_key.get()
答案 1 :(得分:0)
这是一种可以在一次放置操作中分配您选择的键的方法。用你的“else”子句替换你的构造函数。
“id”属性将为实体提供您分配的任何键,就像旧密钥中的“key_name”一样。
newPlayer = Player(
username=username,
id = # the key of your choosing
)
NewPlayer.put()
您还需要一种为每个实体生成唯一键的方法,但我相信您已经找到了这一部分。
祝你好运!