Получить все чаты, в которых участвует определенный пользователь - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть модель Chat, в которой есть поле с именем users. Как я могу получить все Chat с, чье поле users имеет CustomUser с определенным username? Существует ManyToMany связь между Chat с и CustomUser с.

Я пробовал следующее, но оно не работает:

user = CustomUser.objects.get(username=username)
chats = Chat.objects.filter(users__in=user) # doesn't work
chats = Chat.objects.filter(users__contains=user) # also doesn't work

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Вам следует объединять наборы запросов, если вам не нужен доступ к user по какой-либо другой причине. Это уменьшит количество необходимых запросов sql до 1.

Chat.objects.filter(users__username=username)
0 голосов
/ 17 ноября 2018

Это должно сделать работу.

chats: QuerySet = Chat.objects.filter(users__in=[user.pk])

Если у вас есть несколько пользователей для поиска:

users: QuerySet = CustomUser.objects.filter(...)
user_ids: List = list(users.values_list('pk', flat=True))
chats: QuerySet = Chat.objects.filter(users__in=user_ids)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...