我正在使用Python和Jinja2在Google App Engine中撰写博客。我的博客帖子有一个GQL表,所有评论都有一个。公用表中的每条记录都有一个blogpost_id列,以便我知道它们链接到哪个博客帖子。我使用查询'SELECT * from BLOGPOSTS'并将其传递给我的渲染函数。然后在我的HTML模板中有一个for循环打印出我的所有博客帖子。这非常顺利。在blogpost的永久链接中,打印注释很容易,因为我知道blogpost_id所以我可以查询注释表并将其打印出来。
然而,在首页我想显示它下面每个博客帖子的前两个评论。但我无法想出一个解决方案,用于在我的首页上的博客帖子下面打印评论,因为我不知道如何将特定博客帖子的评论传递给我的渲染功能。这有解决方案吗?
答案 0 :(得分:0)
为什么不将包含博客帖子的GQL查询结果传递给您的模板,为什么不传递将博客帖子映射到它的两个最新评论的词典列表?
这样的事情可能有用(虽然可能不是最有效的方法):
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
进行检查,您可能需要查看ancestor queries instead,并将每条评论的祖先设置为其父帖子。