【问题标题】:Combining two Google App Engine datastore results?合并两个 Google App Engine 数据存储区结果?
【发布时间】:2012-03-08 01:30:30
【问题描述】:

我正在尝试合并两个 Google App Engine 数据存储区结果。因为我想在模板中将它们一起列出。

例如: other_user_answers = UserAnswer.gql("WHERE user = :1", user.key()).fetch(500) my_answers = UserAnswer.gql("WHERE user = :1", me.key()).fetch(500)

我想根据 question.key().id() 组合这些结果。这样我就可以在模板中做这样的事情:

{% for other_user_answer in other_user_answers %}
    Question #{{other_user_answer.question.key.id}}<br>
    User: {{other_user_answer.answer}}
    Me:  {{other_user_answer.my_answer}}
{% endfor %}

我不确定我是否以最好的方式解释它!但是有些类似的东西。

另外,我不太确定 Google App Engine 数据存储区的结果是什么(如列表、字典等),所以我什至不太确定我在使用什么。

编辑以获得更多解释: 用户将回答一堆问题。然后,当我登录该站点并转到另一个用户的页面(Jimmy)时。我想在他旁边列出所有 Jimmy 的答案以及我所有的答案。所以我从表 UserAnswer 中提取并为我获得所有答案......然后为 Jimmy。所以现在我有两组结果。我想根据问题 ID 将它们作为一个来吐出。

喜欢:

最喜欢的颜色? 我:红色 吉米:蓝色

最喜欢的冰淇淋? 我:巧克力 吉米:香草

【问题讨论】:

  • 你所说的“结合”到底是什么意思? other_user_question 的每个实例是否都包含 my_answer 以及 my_questions 在做什么?
  • 我更新了它以试图更好地解释它。

标签: python google-app-engine


【解决方案1】:

最好的解决方案可能是将其中一个 fetch() 操作返回的列表转换为由问题 id 键入的字典。然后,您遍历另一个列表并根据问题 id 从字典中提取值,确保处理丢失的条目(例如 Jimmy 回答但您没有回答的问题),并将它们存储在额外的属性中(例如 my_answer )。之后,您可以将该列表传递给模板。

【讨论】:

    【解决方案2】:

    Gql(...).fetch(...) 返回一个实体列表。我不太确定他们的工作方式是否正确,除非您提出问题的结构并进行更多解释。

    顺便说一句,如果您可以对发送到浏览器的内容进行 HTML 转义会更好,除非您当然对内容非常确定。你可以使用autoescape 标签,或者类似{{my_variable|escape}}

    【讨论】:

    • 我想我已经设置好了,所以一切都会自动转义。
    猜你喜欢
    • 2011-02-16
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多