Python 从应用程序引擎数据存储中检索密钥/ID值?
我在Python应用程序上有一个页面,其中有一个与当前用户关联的位置下拉框,位置名称作为下拉框的可见值。我想做的是允许用户选择其中一个位置,以与其当前位置相关联。当用户添加一个新位置时,它将被创建为该用户的子实体,因此我将按如下方式填充下拉框:Python 从应用程序引擎数据存储中检索密钥/ID值?,python,database,google-app-engine,google-cloud-datastore,Python,Database,Google App Engine,Google Cloud Datastore,我在Python应用程序上有一个页面,其中有一个与当前用户关联的位置下拉框,位置名称作为下拉框的可见值。我想做的是允许用户选择其中一个位置,以与其当前位置相关联。当用户添加一个新位置时,它将被创建为该用户的子实体,因此我将按如下方式填充下拉框: locinfo = db.GqlQuery("SELECT * FROM Location WHERE ANCESTOR IS :1", userinfo) …这就是我打算在站点上显示下拉框的方式(我将解释I.key值只是一个占位符) {locinf
locinfo = db.GqlQuery("SELECT * FROM Location WHERE ANCESTOR IS :1", userinfo)
…这就是我打算在站点上显示下拉框的方式(我将解释I.key值只是一个占位符)
{locinfo%中的i的%s}
{{i.locname}
{%endfor%}
所以我想做的是在用户记录中添加对一个特定位置实体的引用。在普通的关系数据库中,我会获取每个位置的主键,将它们作为每个选项的值打印出来,并将它们存储在用户记录中,作为对用户当前位置的引用。然而,我环顾四周,并没有发现任何关于检索钥匙的信息,我环顾四周的次数越多,我就越觉得我走错了方向
有什么建议吗?数据存储中的键由对象表示,而不是简单的值(请参阅) 对于数据存储中的任何实体,请调用其
.key()
方法以获取其键对象,然后可以通过将其转换为字符串来获取可打印的表示形式
您可以在为模板准备数据的视图代码中设置该属性,或者如果您希望能够在模板中调用
i.key
,则可以在该模型类中创建只读属性 webapp中默认使用的Django模板非常适合{{i.key}
;这将调用i
的.key()
方法,并返回字符串representation.Hmm。怎么样,看起来我一直在做额外的工作。不知道OP的代码对他不起作用是什么……对我起作用了——问题出在我代码的其他地方。但是,我似乎无法在Users表中保存用户的当前位置-我将“lockey”值发布到一个页面,该页面将其分配给用户的当前位置(这是一个db.Key()值),并且它不会出现在数据存储查看器中。当我尝试获取该值时,会出现一个错误,显示为“不完整的密钥”。
<select name="lockey">
{% for i in locinfo %}
<option value="{{i.key}}">{{i.locname}}</option>
{% endfor %}
</select>