如何从外键相关表中获取数据?我可以使用select_related或prefetch_related来获取下表中的数据

时间:2015-03-10 10:51:10

标签: python django django-models django-rest-framework django-orm

如何查询这三个表以获取项目的所有用户,任务和项目名称的列表。如何在单个查询集中获取它们? 我使用Django RestFramework来序列化数据。

项目可以有n个用户和n个任务

class Project(models.Model):
    name = models.CharField(max_length = 60)

class Subtask(models.Model):
    task_name = models.CharField(max_length = 60)
    project = models.ForeignKey(Project, related_name = "project_tasks")

class Users(models.Model):
    user_name = models.CharField(max_length = 60)
    project = models.ForeignKey(Project, related_name = "project_user")

1 个答案:

答案 0 :(得分:2)

prefetch_related用于反向关系,这是您从Project到Subtask和User的所有内容。所以:

Project.objects.get(name=whatever).prefetch_related('project_tasks', 'project_users')

(注意你应该与命名一致;关系是一对多,所以你应该使用复数作为related_name。类似地,模型类名应该是单数的,因为一个实例反映了一个项,所以该类应该是User。 )