カスタム文字列をIDとして定義したいので、次のモデルを作成しました。
class WikiPage(ndb.Model):
id = ndb.StringProperty(required=True, indexed=True)
content = ndb.TextProperty(required=True)
history = ndb.DateTimeProperty(repeated=True)
このSOスレッドに基づいて、私はこれが正しいと信じています。
今、私はこのIDでクエリを実行しようとします:
entity = WikiPage.get_by_id(page) # page is an existing string id, passed in as an arg
ただし、これは何も返しません。エンティティはNoneです。代わりに次のクエリを実行した場合にのみ機能します。
entity = WikiPage.query(WikiPage.id == page).get()
カスタムキーを誤って定義したり、get_by_id()を何らかの方法で誤用したりしていますか?
例:
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()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加