0

PythonとJinja2を使用してGoogleAppEngineでブログを書いています。ブログ投稿用のGQLテーブルとすべてのコメント用のGQLテーブルがあります。共通テーブルの各レコードにはblogpost_id列があるため、リンク先のブログ投稿がわかります。クエリ「SELECT*from BLOGPOSTS」を使用して、これをレンダリング関数に渡します。次に、私のHTMLテンプレートに、すべてのブログ投稿を出力するforループがあります。これはかなりスムーズに進みます。ブログ投稿のパーマリンクでは、blogpost_idを知っているのでコメントを簡単に印刷できます。これに対してコメントテーブルをクエリして印刷するだけです。

一方、フロントページでは、すべてのブログ投稿の最初の2つのコメントをそのすぐ下に表示したいと思います。しかし、特定のブログ投稿のコメントをレンダリング機能に渡す方法がわからないため、フロントページのブログ投稿の下にコメントを印刷するための解決策を思い付くことができません。これに対する解決策はありますか?

4

1 に答える 1

0

ブログ投稿を含むGQLクエリの結果をテンプレートに渡すのではなく、ブログ投稿を最新の2つのコメントにマップする辞書のリストを渡してみませんか?

このようなものが機能する可能性があります(ただし、これを行うための最も効率的な方法ではない可能性があります)。

posts = GqlQuery("SELECT * from BLOGPOSTS")
posts_and_comments = []
for post in posts:
    two_comments = GqlQuery("SELECT * from COMMENTS WHERE blogpost_id = :1 ORDER BY age LIMIT 2", post.blogpost_id)
    current_post = {post: two_comments}
    posts_and_comments.append(current_post)

次に、テンプレートに渡しposts_and_commentsて、好きな方法でそれを繰り返すことができます。

また、を介してチェックするのではなく、代わりに祖先クエリblogpost_idを調べて、各コメントの祖先をその親投稿に設定することもできます。

于 2013-01-24T19:19:37.380 に答える