Django получает данные в определенном формате
У меня есть две таблицы
sale
, который имеет поле, подобное этому
А другая таблица product
Я получаю количество тегов и среднюю цену продукта с помощью этого запроса
today = timezone.now().today()
start_date = today - relativedelta(months=12)
end_date = today
sale_filters = (
Q(tags__name__in=['Device','Mobile']) &
(Q(date_created__gte=start_date) & Q(date_created__lte=end_date))
)
sale_year = Sale.objects.using('read_rep') \
.prefetch_related('products') \
.annotate(month=TruncMonth('date_created')) \
.filter(
sale_filters
).values(
'tags__name','date_created'
).annotate(
tags_count=Count('tags__name'),
price_avg=Coalesce(Avg('products__price'), Decimal('0')),
price_sum=Coalesce(Sum('products__price'), Decimal('0'))
).order_by('date_created')
Результат:
{'tags__name': 'Device', 'date_created': datetime.datetime(2022, 11, 12, 3, 20, 3, tzinfo=<UTC>), 'tags_count': 1, 'price_avg': Decimal('234.000000'), 'price_sum': Decimal('234.00')},
{'tags__name': 'Mobile', 'date_created': datetime.datetime(2022, 11, 12, 3, 20, 3, tzinfo=<UTC>), 'tags_count': 1, 'price_avg': Decimal('234.000000'), 'price_sum': Decimal('234.00'), 'fee_sum': Decimal('7.02')}, {'tags__name': 'Device', 'date_created': datetime.datetime(2022, 12, 6, 16, 25, 6, 178045, tzinfo=<UTC>), 'tags_count': 1, 'price_avg': Decimal('100.000000'), 'price_sum': Decimal('100.00')},
{'tags__name': 'Mobile', 'date_created': datetime.datetime(2022, 12, 6, 16, 25, 6, 178045, tzinfo=<UTC>), 'tags_count': 1, 'price_avg': Decimal('100.000000'), 'price_sum': Decimal('100.00')}
Я хочу получить такой результат
{'date_created': datetime.datetime(2022, 11, 12, 3, 20, 3, tzinfo=<UTC>), 'Device': 1, 'Mobile': 1, 'price_avg': Decimal('100.000000'), 'price_sum': Decimal('100.00')}
{'date_created': datetime.datetime(2022, 12, 6, 16, 25, 6, 178045, tzinfo=<UTC>), 'Device': 1, 'Mobile': 1, 'price_avg': Decimal('100.000000'), 'price_sum': Decimal('100.00')}
Есть ли способ, которым я могу достичь такого формата данных. Любая помощь будет оценена по достоинству.