2011-12-06 70 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管理命令查看各產生什麼樣的查詢和可能會更有效率。