Эй, я не уверен, как вы хотите, чтобы ваш REST API работал, но если вы сделаете что-то вроде
from google.appengine.ext import db
def getRESTPath (entity):
def addKeyPathRecursive (key):
restPaths.append('%s/%s' % (key.kind(), key.id_or_name()))
parentKey = key.parent()
if parentKey:
addKeyPathRecursive(parentKey)
restPaths = []
addKeyPathRecursive(entity.key())
return '/'.join(reversed(restPaths))
class Grandpa(db.Model): pass
class Papa(db.Model): pass
class Kid(db.Model): pass
kid = Kid(parent = Papa(parent = Grandpa().put()).put())
kid.put()
print getRESTPath(kid)
вы получите строку типа Grandpa/21386/Papa/21387/Kid/21388
.
Если вы просто хотите (kind, id_or_name)
без пути предка, я не уверен, почему вы недовольны '%s/%s' % (key.kind(), key.id_or_name())
. Вы не можете удалить информацию о пространстве имен из того, как хранилище данных обрабатывает ключи внутренне, но это не значит, что вы должны отображать ее пользователям.