2013-03-05 105 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不是唯一的。

相關問題