Боюсь, что это абсолютно не так.
customer = Customer.objects.get(user=request.user)
posts = Post.objects.filter(mentions__in=customer).order_by('-created_at')
Сбой при mentions__in = customer
, потому что __in
поиск ожидает итерацию (которой является один клиентнет).
Помимо этого, этот запрос даст вам все сообщения, в которых упоминается customer
, что также может быть достигнуто двумя более простыми способами:
posts = Post.objects.filter(mentions=customer).order_by('-created_at')
posts = customer.mentions.order_by('-created_at') # using the 'related_name' from the customer's side
Выхочу получить всех пользователей, которые упомянуты в посте.Но какой пост?Вы забыли упомянуть об этом в своем вопросе.Вы дали нам только текущего пользователя (request.user
), который может иметь несколько сообщений.
Я собираюсь угадать и показать, как вы могли бы привлечь всех других пользователей, упомянутых в сообщениях, сделанных текущим пользователем.
Комучтобы прояснить ситуацию с related_name
этого отношения, я изменю его на related_name = 'mentionend'
.
posts = Post.objects.filter(mentions=customer) # all posts of the current user
# all other users mentioned in those posts
users = Customer.objects.exclude(user=customer).filter(mentionend__in=posts) # using 'related_name'
# or
users = posts.mentions.exclude(user=customer)