我想将自定义字符串定义为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()?
答案 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()