В чате нужно получать количество непрочитанных сообщений для пользователя и никак не получается сделать это с помощью django orm, вот набросок:
chat.message_set.exclude(readers__contains=user).count()
Но это не работает с соответствующей ошибкой:
django.core.exceptions.FieldError: Related Field got invalid lookup: contains
Вот реализация на чистом python, но тут создается отдельный список, а это крайне, на мой взгляд, неэффективно:
sum([1 for m in self.message_set.all() if user in m.readers.all()])
Подскажите пожалуйста, как такую задачу решить более эффективно?
Update:
Придумал как по мне убогенькое решение, но рабочее и в целом быстрое:
В модели сообщения все читатели хранятся в связи ManyToManyField, что и вызывает ошибку, а можно все логины читателей складывать в одну строку и уже к ней применять __contains