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)
что мне нужно: запрос, который возвращает сгруппированные записи, основанные на продавце (с полями продуктов)