class Project(models.Model):
title = models.CharField()
class Job(models.Model):
name = models.CharField()
user = models.ForeignKey(User)
project = models.ForeignKey(Project)
每个项目都有很多工作。如何获得项目所有工作的所有用户列表? 我想出了这个:
users = set()
for job in project.job_set.all():
users.add(job.user)
如果没有明确地循环遍历每项工作,是否有更简单的方法?
答案 0 :(得分:4)
使用Django's join syntax并从User
模型开始:
users = User.objects.filter(job_set__project=project).distinct()
答案 1 :(得分:2)
或者,您可以通过Job模型使用Project到User之间的ManyToMany关系,该模型实际上是一个连接模型:
class Project(models.Model):
users = models.ManyToManyField(User, through='Job')
...
然后简单地做:
project.users.all()