Как создать список из Django queryset и отформатировать поле annotate?

Я пытаюсь сделать мой django запрос json сериализуемым

queryset= list(Products.objects.filter(status=True, salelog__created__range=(start,today)).values("name").annotate(individual_sales=Count("salelog__quantity")).annotate(combined_quantity=Sum("salelog__quantity")))

поэтому я возвращаю json_response(queryset)

и я получаю следующее для combined_quantity: null

но когда я печатаю(queryset) в терминале, я получаю следующее:

[{'name': 'STEAK', 'individual_sales': 21, 'combined_quantity': Decimal('300.00')},
 {'name': 'RIBEYE', 'individual_sales': 18, 'combined_quantity': Decimal('500.00')},
 {'name': 'T-BONE', 'individual_sales': 8, 'combined_quantity': Decimal('450.00')}]

я полагаю, что Decimal(xxx) не очень хорошо работает с моим фронт-эндом. Как мне это исправить?

btw я использую vue и django и довольно новичок в этом

DJango имеет встроенный кодировщик JSON, который обрабатывает такие вещи, как десятичные числа и даты. См. https://docs.djangoproject.com/en/4.0/topics/serialization/#djangojsonencoder

В вашем вопросе я заметил, что вы используете json_response. Я не уверен, что это такое, но при использовании JsonResponseDjango следует использовать djangojsonencoder.

from django.http import JsonResponse
...
return JsonResponse(queryset, safe=False)
#use safe is false as you have a list of dicts, not just a dict.
Вернуться на верх