Python 返回两种型号的django用户';多对多领域

Python 返回两种型号的django用户';多对多领域,python,django,django-models,django-forms,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,我希望获得所有节点协作者和项目协作者的用户。我需要什么

我有以下模型:

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

class Node(models.Model):
    collaborators = models.ManyToManyField(User)
    project = models.ForeignKey(Project)
假设我拥有节点的pk,我希望获得所有节点协作者和项目协作者的用户。我需要什么查询

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)
假设它们都能工作,您可能希望在类似的's
debugsqlshell
management命令中尝试这两种方法,以查看每种方法生成的查询类型以及哪种查询更有效