在RESTful API中显示父亲和儿子?

时间:2013-06-07 12:45:06

标签: django rest

我正在尝试使用Django REST框架生成json我稍后可以在我的网站上使用。问题是,我有用户,他们有一对多的项目,而且这些项目有一对多的任务。

问题是,我想显示我的用户列表,然后当我访问用户的详细信息时,我可以看到他的项目。然后,当我检查项目的细节时,我可以看到这个项目的任务。现在,我的模型定义如下:

class SimpleUser(AbstractBaseUser):
    username = models.TextField(max_length=40, unique=True)
    firstname = models.TextField(max_length=40)
    lastname = models.TextField(max_length=40)

class Project(models.Model):
    user = models.ForeignKey(SimpleUser, null=True)
    name = models.TextField(max_length=255)

class Task(models.Model):
    project = models.ForeignKey(Project, related_name='task_project')
    title = models.TextField(max_length=255)

当我试图显示链接到用户的项目时,无论我尝试什么,我都会出错(我很确定这是因为我所做的是错误的),错误是“ SimpleUser没有属性Project“。这是合乎逻辑的。但我真的不知道怎么做,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

您应该使用project_set来访问SimpleUsers Projects

user = SimpleUser.objects.get(id=1)
projects = user.project_set.all()

或者使用related_name=

为经理定义具体名称
user = models.ForeignKey(SimpleUser, null=True, related_name='projects')

然后,您可以通过projects访问用户项目:

projects = user.projects.all()

答案 1 :(得分:1)

尝试明确指定关系的related_name

class Project(models.Model):
    user = models.ForeignKey(SimpleUser, null=True, related_name='projects')
    name = models.TextField(max_length=255)