get_by_key_name
在使用 App Engine ORM 拨打电话之前,我遇到了一个奇怪的问题。
在任何情况下,人们都不会假设以下返回 None:
Model.get_by_key_name(Model.all().get().key().name())
然而,这就是我发现某些键名会做的事情。仅在少数情况下,我使用如下的 Open ID URL 作为 key_name 属性:
https://me.yahoo.com/a/jadjuh3s0klsghiLhtBNbIiHw8k-#3dcl3
(我改变了几个字符来保护无辜者)
也许是“#”符号?
解决方案:正如尼克约翰逊所建议的,我需要修改查询,因为实体有父:
entity = Model.all().get() Model.get_by_key_name(entity.key().name(), parent=entity.parent_key())
无论是哪种情况,如果存在无法使用键名来获取实体的情况,那么首先不应允许将其用作键名。