【发布时间】:2020-03-28 11:29:57
【问题描述】:
我有两个使用直通模型具有多对多关系的模型。
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()
我想检查 2 个 Person 对象是否至少共享一个部门。例如如果p1在部门d1和d2工作,而p2在d2和d3部门工作,那么他们都在d2工作,输出应该是True
我知道我不能这样做
>>> p1.departments.intersection(p2.departments).exists()
...
AttributeError: 'ManyRelatedManager' object has no attribute 'query'
因为我使用的是直通关系。检查 2 到 ManyToMany 查询集是否包含至少一个相同元素的最佳方法是什么?
【问题讨论】: