Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于贯通模型的多目标Django交_Python_Django - Fatal编程技术网

Python 基于贯通模型的多目标Django交

Python 基于贯通模型的多目标Django交,python,django,Python,Django,我有两个模型,它们使用直通模型具有多个关系 class Person(Model): departments = ManyToManyField('Department', through='DepartmentStaff') class Department(Model): id = ... class DepartmentStaff(Model): staff_member = ForeignKey(Person, on_delete=CASCADE) d

我有两个模型,它们使用直通模型具有多个关系

class Person(Model):
    departments = ManyToManyField('Department', through='DepartmentStaff')

class Department(Model):
    id = ...

class DepartmentStaff(Model):
    staff_member = ForeignKey(Person, on_delete=CASCADE)
    department = ForeignKey(Department, on_delete=CASCADE)
    experience = DurationField()
我想检查两个人对象是否至少共享一个部门。e、 g.如果人员
p1
在部门
d1
d2
工作,人员
p2
在部门
d2
d3
工作,则他们都在
d2
工作,输出应为
True

我知道我不能做这样的事

>>> p1.departments.intersection(p2.departments).exists()
...
AttributeError: 'ManyRelatedManager' object has no attribute 'query'

因为我用的是一种彻底的关系。检查2到多个查询集是否至少包含一个相同元素的最佳方法是什么?

可能是这样的


DepartmentStaff.objects.filter(staff\u member='p1',department\u in=DepartmentStaff.objects.filter(staff\u member='p2'))

Hmm,这里似乎总是返回一个空查询集,因为您使用&on的两个查询集是互斥的。这失败是因为您将DepartmentStaff用作筛选部门的查询集。该代码引发一个ValueError