Как отфильтровать модель Джанго по ее объектам в поле «многие ко многим» (точное совпадение)?

У меня есть эта модель в моем коде:

class Conversation(models.Model):
    participants = models.ManyToManyField(User, related_name="message_participants")

и мне нужно отфильтровать этодиалог» моделировать объектыучастники» поле много ко многим. это означает, что у меня есть, например, 3 объекта пользователя, поэтому я хочу получить толькодиалог» объекты, в которых есть 3 пользователяучастники» поле.

Я пытался сделать это:

def get_exist_conv_or_none(sender,recipients):
    conv = Conversation.objects.filter(participants=sender)
    for rec in recipients:
        conv = conv.filter(participants=rec)

где отправитель является объектом пользователя и "получатели» список объектов пользователя. это победилоЯ не могу вызвать ошибку, но это дает мне неправильный объект разговора. Благодарю.

редактировать: более поздняя попытка привела меня к этому:

def get_exist_conv_or_none(sender,recipients):
    participants=recipients
    participants.append(sender)
    conv = Conversation.objects.filter(participants__in=participants)
    return conv

которые в основном имеют ту же проблему. Это дает объекты, которые имеют один или несколько изучастники» в списке. но то, что я ищу, это точное совпадение объекта «многие ко многим». Смысл, объект с точнымПользователи» в теме'отношение многих ко многим.

редактировать 2: моя последняя попытка все-таки победилт работа.

def get_exist_conv_or_none(sender,recipients):
    recipients.append(sender)
    recipients = list(set(recipients))
    conv = Conversation.objects.annotate(count=Count('participants')).filter(participants=recipients[0])
    for participant in recipients[1:]:
        conv.filter(participants=participant)
    conv.filter(count=len(recipients))
    return conv

Ответы на вопрос(2)

Ваш ответ на вопрос