2013-03-05 104 views
1

我在GAE交互式控制台(/ _ah/admin/interactive)中运行以下代码,并且我不明白为什么get_by_id()在未指定父项时返回None。文档没有明确这个限制,我想不出一个强制执行的理由。为什么当没有指定父项时,db.Model.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.Model定义和代码显示对象的创建与祖先:

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() 

回答

3

回答你的问题是:因为同一个ID可以在另一实体但与父母不同。

这些ID将与同一父母或所有没有父母的实体有所不同,但是如果有祖先,则您的数字ID不是唯一的。

相关问题