访问Google App引擎数据存储区中实体的数字ID

时间:2013-06-21 18:12:41

标签: google-app-engine

我从数据存储区访问id时看了this topic。现在我尝试做类似post.key().id()的操作,但它不会返回我想要的数字ID。

如何访问Google数据存储区中实体的数字ID。我正在使用GAE 1.8与Python 2.7。我相信我刚刚向你展示的问题已经发生了很多变化。

这是为我的实体post制作永久链接的尝试,这是一篇博文。

以下是代码:

# coding=utf-8
from google.appengine.ext import db


class BlogPost(db.Model):
    title = db.StringProperty(required=True)
    content = db.TextProperty(required=True)
    created_at = db.DateTimeProperty(auto_now_add=True)

    def url(self):
        return '/blog/%s' % self.key().id()

对此有任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您期望这是获取数字ID的方法。

如果您获得None,则表示您已使用id的字符串创建实体。

你可以尝试

key().id_or_name() 返回数据实体的名称或数字ID,无论它具有哪个,如果实体既没有名称也没有数字ID,则返回None。

如果您从id_or_name()获得“无”,则表示该实体尚未成为put()

答案 1 :(得分:0)

创建实体时,指定一个祖先键,以及字符串名称或数字ID之一。

如果使用字符串创建它,则没有数字ID。

你可能想要name(),或者如果你不确定id_or_name()

以下是文档:https://developers.google.com/appengine/docs/python/datastore/keyclass#Key_id_or_name