Я столкнулся со странной проблемой, с которой я не сталкивался до совершения вызова get_by_key_name
с использованием App Engine ORM.
Ни при каких обстоятельствах нельзя было бы предположить, что следующее не вернет None:
Model.get_by_key_name(Model.all().get().key().name())
И все же, я обнаружил, что подойдут некоторые ключевые имена. Лишь в нескольких случаях я использую URL-адреса Open ID, подобные следующим, как атрибуты 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())
Как бы то ни было, если есть обстоятельства, когда имя ключа не может быть использовано для извлечения сущности, его нельзя использовать в качестве имени ключа.