我有模特:
class Project(models.Model):
project_collaborators = models.ManyToManyField(User)
class Node(models.Model):
collaborators = models.ManyToManyField(User)
project = models.ForeignKey(Project)
我想让所有用户都是节点协作者,也是项目协作者,假设我有节点的pk。我需要什么查询?
答案 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-toolbar的debugsqlshell
管理命令,以查看每个产生哪种查询,哪些可能是效率更高。