Django Queryset: Фильтр для подмножества отношения "многие ко многим

Предположим следующую модель:

class User(models.Model):
     clients = models.ManyToManyField(Client)   

Как запросить пользователей по списку клиентов так, чтобы возвращались только те пользователи, у которых назначены не другие клиенты, кроме тех, что есть в данном списке.

User.objects.filter(client__??=[client1, client2])

Я просмотрел документацию Django по поиску полей, но это не помогло.

Заранее спасибо!

clients = [client1, client2]  # this is a list but most probably it will be a queryset, it works either way

users = []
for client in clients:
     users += client.users.all()

Я думаю, что это нужно сделать с помощью sql EXCEPT, к которому можно получить доступ queryset.difference()

Итак, идея заключается в том, чтобы взять "ВСЕХ" пользователей и удалить тех, которые соответствуют запросу вашего клиента.

User.objects.all().difference(User.objects.filter(clients__in=excluded_clients))
Вернуться на верх