2011-12-06 43 views
2

我有型号:返回这两种型号多到多领域的Django用户

class Project(models.Model): 
    project_collaborators = models.ManyToManyField(User) 

class Node(models.Model): 
    collaborators = models.ManyToManyField(User) 
    project = models.ForeignKey(Project) 

我想获得那些节点的合作者,也是一个项目合作者所有用户,假设我有节点的pk。我需要什么查询?

回答

1
from django.db.models import F 
User.objects.filter(node__pk=node.pk, project=F('node__project')) 

应该工作。没有测试过它。如果没有,你可以试试这个还有:假设他们工作

User.objects.filter(node__pk=node.pk, project__node__pk=node.pk) 

,你可能想尝试无论是在像django-debug-toolbardebugsqlshell管理命令查看各产生什么样的查询和可能会更有效率。