[Django]-Distinct values in ManyToManyField over a subset of objects in Django

8👍

✅

Edit: Okay, I didn’t have a ManyToManyField to test on before so I was guessing. New code!

books = Book.objects.filter(title__contains="T")
categories = Category.objects.filter(book__in=books).distinct()

4👍

You need to filter by the ‘book’ field:

book_ids = list(Book.objects.filter(...).values_list('id', flat=True)
categories_queryset = Category.objects.filter(book__in=book_ids).distinct()

Leave a comment