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