get_by_id() 将不会返回模型实例

2024-01-25

我有一个名为 Version 的模型,如下所示:

from google.appengine.ext import db
import piece

class Version(db.Model):
    "A particular version of a piece of writing."

    parent_piece = db.ReferenceProperty(piece.Piece, collection_name='versions')
    "The Piece to which this version belongs."

    note = db.TextProperty()
    "A note from the Author about this version."

    content = db.TextProperty()
    "The actual content of this version of the Piece."

    published_on = db.DateProperty(auto_now_add=True)
    "The date on which the version was published."

我想使用 Version.get_by_id() 通过 ID 访问 Version 的实例,但此调用始终返回None。我可以在数据存储查看器中看到它们具有 ID 值,并且在调试器中,我可以查询它们但不能使用它们:

>>> for each_ver in version.Version.all():
...  print each_ver.key().id()
... 
34
35
36
31
32
>>> a = version.Version.get_by_id(34)
>>> type(a)
<type 'NoneType'>

我发现这里有很多问题,人们能够按照我的意愿有效地使用 get_by_id() ,但他们看不到我所看到的结果。

问题可能是每个Version实例是实体组中的子项而不是实体组的根?每个Version存在于一个实体组中,该实体组看起来像“成员”->“片段”->“版本”。如果这是问题所在,有没有一种方法可以让我在不使用其整个密钥的情况下引用 Version 实体?如果这不是问题,谁能告诉我我能做些什么来使按 ID 获取()按预期工作吗?


问题可能是每个版本 实例是实体组中的子级 而不是实体组的根?

是的。实体的密钥包括任何父实体的密钥。

如果这是问题所在,是否有一个 我可以引用版本实体的方式 不使用它的整个密钥?

不可以。实体仅由其整个键来唯一标识,其中包括所有父实体的键。不过,如果您知道其父实体的类型,则可以使用 db.Key.from_path 从 ID 或键名称链构造键。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

get_by_id() 将不会返回模型实例 的相关文章

随机推荐