У меня есть две модели, которые имеют отношение ManyToMany с использованием сквозной модели.
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 хотя бы один и тот же элемент?