Django при фильтрации по принципу "многие ко многим" выдает "Ни один оператор не соответствует заданному имени и типу аргументов".

В моем проекте Django есть следующие модели:

model Profile(models.Model):
    user = models.OneToOneField(User)
    faculties = models.ManyToManyField('users.Faculty', related_name='profiles')

Теперь я хочу определить функцию, которая выдает мне всех сослуживцев пользователя/профиля следующим образом:

def coworkers(self):
    coworkers = User.objects.none()
    for faculty in self.faculties.all():
        coworkers |= User.objects.filter(Q(profile__faculties__id__exact=faculty.id))
    return coworkers

Но потом я всегда бегу в ProgrammingError at /exercise/ operator does not exist: character varying = integer или No operator matches the given name and argument types. You might need to add explicit type casts. ) was the direct cause of the following exception:.

Я также пробовал:

faculties = [f.id for f in self.faculties.all()]
coworkers = User.objects.filter(Q(profile__faculties__id__in=faculties)

В обеих версиях также не работает __exact вместо __in.

Есть помощь?

Вернуться на верх