Django Postgresql annotate group_by (annotate) не работает?

Я хочу запросить продукт с деталями, но в настоящее время я не получаю результатов, как я хочу.

class Product(models.Model):
    .
    .
    .
    price = models.DecimalField()
    url = models.URLField(max_length=255, null=True, unique=True)
    merchant = models.ForeignKey(Merchant, on_delete=models.DO_NOTHING)

class ProductVariant(models.Model):
    sku = models.CharField(max_length=255)
    product = models.ForeignKey(Product, on_delete=models.DO_NOTHING)

Запрос:

class Detail(DetailView):
    model = ProductVariant
    template_name = "products/cpus_detail.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['cpu'] = CPU.objects.filter(
            model__iexact=context['object'].sku).first()
        merchant_products = ProductVariant.objects.filter(sku__iregex=rf"\y{context['object'].sku}\y").values('product__merchant').annotate(merchant=Count('product__merchant'))

Выход вышеприведенного запроса:

<QuerySet [{'product__merchant': 1, 'merchant': 1}, {'product__merchant': 2, 'merchant': 2}]>

.

в вышеприведенном запросе товары сгруппированы по продавцам.

А если я хочу включить другие поля модели продукта:

<QuerySet [{'product__merchant': 1, 'product__url': 'some url 1', 'merchant': 1}, {'product__merchant': 2, 'product__url': 'some url 2', 'merchant': 1}, {'product__merchant': 2, 'product__url': 'some url 3', 'merchant': 1}]>

теперь в приведенном выше запросе продукт больше не группируется по продавцу (возвращается 3 записи вместо 2, хотя 2 записи имеют product__merchant: 2)

что мне нужно: запрос, который возвращает сгруппированные записи, основанные на продавце (с полями продуктов)

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