Удалить appid (& namespace) из ключевой строки - PullRequest
0 голосов
/ 12 февраля 2011

Строковое представление ключа объекта всегда имеет идентификатор приложения и пространство имен в качестве префикса. Но в большинстве случаев они не обязательны, потому что слишком очевидны.

ex> Key: ag13YXJjbG91ZC10ZXN0chsLEgVGb3JjZRihnAEMCxIIVW5pdFNsb3QYAgw

после удаления части appid_namespace: chsLEgVGb3JjZRihnAEMCxIIVW5pdFNsb3QYAgw

Я знаю, что пара (kind, id или name) может быть другим решением для идентификации уникальной сущности, но здесь я просто хочу узнать, как устранить префикс app-id и namespace и выставить rest как часть REST API ...

Как я могу их удалить?

1 Ответ

4 голосов
/ 12 февраля 2011

Эй, я не уверен, как вы хотите, чтобы ваш 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()). Вы не можете удалить информацию о пространстве имен из того, как хранилище данных обрабатывает ключи внутренне, но это не значит, что вы должны отображать ее пользователям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...