2012-06-25 35 views
3

我有一個簡單NDB模型如下模型:NDB查詢基於KeyProperty實例

class TaskList(ndb.Model): 
    title = ndb.StringProperty() 
    description = ndb.TextProperty() 
    priority = ndb.IntegerProperty() 


class UserProfile(ndb.Model): 
    user = ndb.UserProperty() 
    tasks = ndb.KeyProperty(TaskList) 

如已知的,一個任務列表對象將具有Entity KindEntity KeyID。 給定一個ID說7 我可以很好地獲取對象ID爲7如下:

task = ndb.Key(TaskList, 7).get() 

但我如何得到誰的任務ID 7用戶?

我想:

tsk = ndb.Key(TaskList, 7).get() 
user = UserProfile.query(UserProfile.tasks == tsk.key) 

它的工作原理,但有沒有更好的方法?

+0

是否有一個原因,你是不是能夠在TaskList實體本身上擁有一個用戶屬性? – Sologoub

回答

5

你就要成功了 - 但有沒有必要取任務,只需再次使用它的主要特性:

task_key = ndb.Key(TaskList, 7) 
user = UserProfile.query(UserProfile.tasks == task_key) 

或等價:

user = UserProfile.query(UserProfile.tasks == ndb.Key(TaskList, 7))