Skip to main content
 首页 » 编程设计

python之如何在不命中数据库的情况下获取 db.ReferenceProperty 的键值

2025年05月04日9jpfss

有没有办法在不取消引用它指向的实际实体的情况下获取 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)方法。