Django фильтрация по Many To Many
У меня есть две модели:
class Category(models.Model):
name = models.CharField(max_length='255')
parent = models.ForeignKey("self", on_delete=models.CASCADE, null=True, related_name='children', related_query_name='child')
class Product(models.Model):
name = models.CharField(max_length='255')
category = models.ManyToManyField(Category)
В базе примерно 6млн товаров и 12к категорий. У каждого товара есть несколько категорий. Я фильтрую по category_id:
categories = [1, 5, 6, 7, ....]
products = Product.objects.filter(category__id__in=categories)
Фильтрация по MtM может возвращать дубликаты, поэтому нужно использовать distinct(). Проблема в том, что с distinct время выполнения запроса достигает 15с, тогда как без него 3 секунды. Может есть способ выбора уникальных Product без distinct? Буду очень благодарен за любой ответ по теме