0

私はこのクエリを実行しようとしています:

my_post = db.GqlQuery("SELECT * FROM Post where __key__ = KEY('Post', 1)")
self.render("showpost.html", my_post = my_post)

私のテンプレートshowpost.htmlは次のようになります。

<div class="post">
  <h3 class="post-subject">{{ my_post.subject }}</h3>
  <div class="post-content">{{ my_post.content }}</div>
</div

投稿の詳細を取得する代わりにid=1 、空白のページが表示されます。id = 1の投稿がありますが、GQLqueryが実際に何かを返しているかどうかを確認する方法がわかりません。確認する方法はありますか?次のことを試してみてください:

my_post = db.GqlQuery("SELECT * FROM Post where subject = 'hello_world')
self.render("showpost.html", my_post = my_post)

件名がhello_world

どうもありがとう

4

2 に答える 2

2

GqlQueryクラスです。
コードによってGqlQueryクラスのインスタンスが作成されました。
データストアから何かを返すには、次のインスタンスメソッドのいずれかを使用する必要があります。

.fetch() # requires number of entities as first argument
.get()

例:

my_query = db.GqlQuery("SELECT * FROM Post WHERE subject = :subject", 
                       subject="hello_world")
my_post = my_query.get() # the magic happens here
self.render("showpost.html", my_post = my_post)
于 2012-05-03T15:30:19.717 に答える
2

Bernieは、作成したGqlQueryを使用する.fetch.get、実際に結果を取得する必要があるという点で正しいですが、キーまたはIDがある最初のバージョンでは、クエリをまったく作成したくありません。むしろ、それらを直接使用するために提供されている方法を使用してください。

IDをお持ちの場合は、次を使用してください。

my_post = Post.get_by_id(id)

これは、クエリオブジェクトを使用するよりもはるかに高速です。

キー全体がある場合は、次を使用します。

my_post = Post.get(key)

これは、データベースからエンティティを取得するための最も高速で効率的な方法です。

于 2012-05-03T17:17:56.690 に答える