有没有办法在不取消引用它指向的实际实体的情况下获取 db.ReferenceProperty 的键(或 ID)值?我一直在研究 - 看起来 key 存储为属性名称前面有一个 _,但我无法让任何代码工作。示例将不胜感激。谢谢。
编辑:这是我尝试失败的方法:
class Comment(db.Model):
series = db.ReferenceProperty(reference_class=Series);
def series_id(self):
return self._series
在我的模板中:
<a href="games/view-series.html?series={{comment.series_id}}#comm{{comment.key.id}}">more</a>
结果:
<a href="games/view-series.html?series=#comm59">more</a>
请您参考如下方法:
实际上,您提倡访问 ReferenceProperty 的键的方式将来可能不存在。 python中以'_'开头的属性通常被认为是“ protected ”,因为与其实现紧密绑定(bind)和密切的事物可以使用它们,但是随着实现更新的事物必须在它改变时改变。
但是,有一种方法可以通过公共(public)接口(interface)访问您的引用属性的 key ,以便将来安全。我将修改上面的示例:
class Comment(db.Model):
series = db.ReferenceProperty(reference_class=Series);
def series_id(self):
return Comment.series.get_value_for_datastore(self)
当您通过关联的类访问属性时,您会得到属性对象本身,它有一个可以获取基础值的公共(public)方法。
