返回两个模型的多对多字段中的django用户

时间:2011-12-06 18:01:18

标签: python django django-models django-forms

我有模特:

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

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

我想让所有用户都是节点协作者,也是项目协作者,假设我有节点的pk。我需要什么查询?

1 个答案:

答案 0 :(得分: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管理命令,以查看每个产生哪种查询,哪些可能是效率更高。