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
.
Есть помощь?