基于KeyProperty实例查询一个模型的ndb查询

3

我有一个简单的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 Key)和一个ID。

假设给定一个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)

这样可以运作,但是有没有更好的方法呢?


你为什么不能在TaskList实体本身上拥有一个用户属性? - Sologoub
1个回答

5
你已经接近成功了 - 但是没有必要再去获取任务,只需要再次使用它的key属性即可:
task_key = ndb.Key(TaskList, 7)
user = UserProfile.query(UserProfile.tasks == task_key)

或者等价地说:
user = UserProfile.query(UserProfile.tasks == ndb.Key(TaskList, 7))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接