Google App Engine:定义自定义ID和查询

时间:2014-01-17 01:00:10

标签: python google-app-engine

我想将自定义字符串定义为ID,因此我创建了以下模型:

class WikiPage(ndb.Model):
    id = ndb.StringProperty(required=True, indexed=True)
    content = ndb.TextProperty(required=True)
    history = ndb.DateTimeProperty(repeated=True)

基于此SO thread,我认为这是正确的。

现在我尝试按以下方式查询:

entity = WikiPage.get_by_id(page) # page is an existing string id, passed in as an arg

这基于NDB API

然而,这并没有返回任何东西 - 实体是无。 它仅在我运行以下查询时才有效:

entity = WikiPage.query(WikiPage.id == page).get()

我是否错误地定义了自定义键或以某种方式滥用了get_by_id()?

1 个答案:

答案 0 :(得分:2)

示例:

class WikiPage(ndb.Model):
    your_id = ndb.StringProperty(required=True)
    content = ndb.TextProperty(required=True)
    history = ndb.DateTimeProperty(repeated=True)

entity = WikiPage(id='hello', your_id='hello', content=...., history=.....)
entity.put()

entity = WikiPage.get_by_id('hello')

key = ndb.Key('WikiPage','hello')
entity = key.get()
entity = WikiPage.get_by_id(key.id())

这仍然有效:

entity = WikiPage.query(WikiPage.your_id == 'hello').get()