Предотвращение дубликатов при фильтрации по prefetch_related

У меня есть две модели: Seller и Product.

Каждый товар имеет внешний ключ к продавцу. Таким образом, у каждого товара есть только one продавец, но продавец может быть связан с many товарами.

Это внешний ключ в моем Product-классе:

seller = models.ForeignKey(
    Seller,
    on_delete=SET_NULL,
    null=True,
    related_name="products",
)

Теперь я пытаюсь запросить всех продавцов и получить сопутствующие товары для каждого продавца вместе с ними.

sellers = (
    Seller.objects.filter(
        ..doing some filtering
    ).prefetch_related("products").filter(products__branch=current_branch)
)

Благодаря этому в моем sellers есть несколько записей для многих продавцов, поскольку я фильтрую по товарам, связанным с prefetche_related, что приводит к объединению внутри базы данных-запроса.

Каким образом лучше всего получить список продавцов, каждый из которых имеет свой список товаров? Без дубликатов. Мне все еще нужно фильтровать продукты, так как я не хочу, чтобы все продукты запрашивались.

Вернуться на верх