google app engine -为什么db.Model.get_by_id()在没有指定父节点时返回None ?



我在GAE交互控制台(/_ah/admin/interactive)中运行以下代码,我不明白为什么在未指定父级时get_by_id()返回None。文档没有明确说明这个限制,我想不出一个强制执行它的理由。

import my_model
print my_model.all().fetch(1)[0].key().id()  # Returns 33006, used later
print my_model.get_by_id(33006)
print my_model.get_by_id(my_model.all().fetch(1)[0].key().id())
parent = my_model.all().fetch(1)[0].parent()
print my_model.get_by_id(33006, parent=parent)
输出:

33006
None
None
<my_model object at 0x109a6a690>

db。模型定义和代码显示对象创建与祖先:

class my_model(db.Model):
    user_id = db.StringProperty(indexed=True)
    email = db.StringProperty(indexed=True, default=None)
    def create(parent):
        obj = my_model(user_id='x', email='y', parent=parent)
        obj.put()

你的问题的答案是:因为相同的ID可以在另一个实体,但有不同的父。

对于相同的父对象或没有父对象的所有实体,id都是不同的,但如果有一个祖先,那么您的数字id不是唯一的。

最新更新