从应用引擎数据存储中检索键/ ID值?

时间:2011-02-02 13:23:42

标签: python database google-app-engine google-cloud-datastore

我的Python应用程序上有一个页面,其中有一个与当前用户关联的下拉框,其中的位置名称为下拉框的可见值。我想要做的是允许用户选择其中一个位置与其当前位置相关联。当用户添加新位置时,它将被创建为该用户的子实体,因此我将填充下拉框,如下所示:

locinfo = db.GqlQuery("SELECT * FROM Location WHERE ANCESTOR IS :1", userinfo)

...这就是我打算在网站上显示下拉框的方式(i.key值只是一个占位符,我会解释)。

<select name="lockey">
    {% for i in locinfo %}
        <option value="{{i.key}}">{{i.locname}}</option>
    {% endfor %}
</select>

所以我想要做的是在User记录中添加对一个特定Location实体的引用。在普通的关系数据库中,我将获得每个位置的主键,将它们作为每个选项的值打印出来,并将它们存储在用户记录中作为对用户当前位置的引用。然而,我环顾四周,并没有找到关于检索钥匙的任何信息,而且越是环顾四周,我得到的印象就是错误的方式。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

数据存储区中的键由对象表示,而不是简单值(请参阅here

对于数据存储区中的任何实体,调用其.key()方法获取其关键对象,然后通过将其转换为字符串来获取可打印的表示形式。

您可以在为模板准备数据的视图代码中进行此设置,或者如果您希望只能在模板中调用i.key,则可以在其中创建只读属性模特课。