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

2 投票
1 回答
5931 浏览
提问于 2025-04-16 11:05

我在我的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>

我想做的是在用户记录中添加一个特定地点的引用。在普通的关系型数据库中,我会获取每个地点的主键,把它们作为每个选项的值打印出来,然后在用户记录中存储这些值,以此来指向用户的当前位置。不过我查了一下,似乎没有找到关于如何获取这个主键的信息,越查我越觉得自己可能走错了方向。

有什么建议吗?

1 个回答

2

在数据存储中,键是用对象来表示的,而不是简单的值(详细信息可以查看这里)。

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

你可以在准备数据的视图代码中设置这个,方便模板使用;或者如果你想在模板中直接调用 i.key,你可以在那个模型类中创建一个只读属性。

撰写回答