2014-07-04 2 views
0

Je rencontre un problème lorsque je tente d'ajouter un KeyProperty sur deux de mes classes models.pyMTM Relation GAE - NameError

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) 

Je reçois l'erreur suivante:

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

De l'une des réponses précédentes ici, j'ai essayé de changer l'ordre, mais j'ai juste pris l'autre classe comme cause d'erreur dans le journal des erreurs. Il était initialement

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

mais après googling j'ai essayé la propriété structurée. Le but est d'avoir des tâches connectées à un projet particulier, et que lorsque je demande un projet particulier, je puisse lister les tâches qui lui sont associées, mais quand je clique sur la tâche, je peux voir que il est répertorié pour une tâche particulière.

Répondre

0

Vous devez utiliser le type de l'entité, comme une chaîne, pour le modèle que vous définissez d'abord (Tâche dans votre code):

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)