Skip to main content
 首页 » 编程设计

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

2025年05月04日31jpfss

我有模型:

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) 

假设它们都 有效,您可能想在 django-debug-toolbar 中尝试两者的 debugsqlshell 管理命令来查看每个产生什么样的查询以及哪个可能更有效。