ndb基于KeyProperty实例查询模型

时间:2012-06-25 18:47:22

标签: google-app-engine app-engine-ndb

我有一个简单的ndb模型如下:

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


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

众所周知,TaskList对象将具有Entity Kind Entity 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)

它有效,但是有更好的方法吗?

1 个答案:

答案 0 :(得分:5)

你几乎就在那里 - 但是没有必要再获取任务,只是再次使用它的关键属性:

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

或等效地:

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