MTM关系GAE - NameError

时间:2014-07-04 18:27:08

标签: python google-app-engine google-cloud-datastore

当我尝试在models.py中的两个类上添加KeyProperty时遇到问题

class Task(ndb.Model):
    name = ndb.StringProperty(required=True)
    project = ndb.KeyProperty(kind=Project, repeated=True)
    description = ndb.TextProperty(required=True)
    task_state = ndb.StringProperty(required=True)


class Project(ndb.Model):
    name = ndb.StringProperty(required=True)
    description = ndb.StringProperty(required=True)
    project_state = ndb.StringProperty(required=True)
    tasks = ndb.StructuredProperty(kind=Task, repeated=True)

我收到以下错误:

project = ndb.KeyProperty(kind=Project, repeated=True)
NameError: name 'Project' is not defined

从这里的一个先前的答案,我已经尝试切换顺序,但后来我只是将另一个类作为错误日志中的错误原因。最初是

ndb.KeyProperty(kind=Task, repeated=True)  

但谷歌搜索后我尝试了结构化属性。

目标是让任务连接到特定项目,当我查询某个项目时,我可以列出与之关联的任务,但是当我点击任务时,我可以看到它是为特定任务列出的。

1 个答案:

答案 0 :(得分:0)

您需要首先使用实体​​的类型作为字符串,为您首先定义的模型(代码中的任务):

class Task(ndb.Model):
    name = ndb.StringProperty(required=True)
    project = ndb.KeyProperty(kind='Project', repeated=True)
    description = ndb.TextProperty(required=True)
    task_state = ndb.StringProperty(required=True)