Как ограничить данные prefetch_related в django - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть две таблицы бренда и продукта. каждая марка имеет несколько продуктов.

Итак. Я использовал prefetch_related, чтобы получить сопутствующие товары для конкретного бренда с минимальной ценой товара. но проблема в том, что когда у меня есть 2 продукта с одинаковой ценой, он выбирает обе записи, так как это ограничить?

alternatives_data = Brand.objects.filter(category__category_slug = category_slug).prefetch_related(
    Prefetch('products', queryset=Product.objects.annotate(
                min_brand_price=Min('brand__products__product_price')
            ).filter(
                product_price=F('min_brand_price')
            ).order_by('product_id')))

Я пробовал все, но ничего не работает!

1 Ответ

0 голосов
/ 05 марта 2020

Чтобы запрос не возвращал несколько записей с дубликатами в указанных столбцах c, используйте метод distinct.
В вашем случае добавьте .distinct('price') к набору запросов Product внутри предварительной выборки.

Однако есть одно предупреждение: оно поддерживается только на PostgreSQL.

Документация

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