Как из вложенного JSON в JSON получить эту дату и сделать сериализацию для API в Django RestFramework
Здравствуйте, я новичок в DRF и мне нужна помощь. Я пишу API.Затем пользователь, например, вводит url http://api.result/82467/pulse, затем он получает информацию для результата с номером 82467 и измерение пульса (нужно получить только эти данные):
{
"code": "1120",
"norm": null,
"value": "1",
},
{
"code": "1121",
"norm": null,
"value": "2",
}
и если http://api.result/82467/termom, то он получит информацию для результата с номером 82467 и измерение терма (необходимо получить только эти данные):
{
"code": "1118",
"norm": "35.9 - 37.0",
"value": "36.5",
}
Я получаю эти данные из базы данных и предоставляю информацию для пользователя, поэтому я должен сериализовать эти данные. поле "type" - динамическое, поле "exams" - JSONField() в модели Result, а "code", "value" и "norm" - объекты BaseData. Моя проблема в том, что я должен получить поля из "review"("code", "value" и "norm") в views.py для сериализации, потому что это json и я не знаю, как я должен с ним работать, как получить эти данные и как сделать сериализацию. Может быть json.dump(), но тогда я получу str и не смогу преобразовать в dict. Может кто-нибудь даст мне совет, пожалуйста.
{
"id": 56,
"number": "82467",
"date": "2021-08-19",
"exams": [
{
"type": "termom",
"stamp": "2021-08-19R17:00:17",
"review": [
{
"code": "1118",
"norm": "35.9 - 37.0",
"value": "36.5",
}
],
},
{
"type": "pulse",
"stamp": "2021-08-19R12:00:47",
"review": [
{
"code": "1120",
"norm": null,
"value": "1"
},
{
"code": "1121",
norm": null,
"value": "2",
},
]
}
]
}
my url.py
router = SimpleRouter()
urlpatterns = [
path(
'result/<int:number>/',
ResultViewSet.as_view({'get': 'retrieve'}),
),
]
urlpatterns += router.urls
views.py
class ResultViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Result.objects.all()
serializer_class = ResultSerializer
lookup_field = 'number'
lookup_url_kwarg = 'number'
permission_classes = [IsAuthenticated]
serializer.py
class ReviewSerializer(serializers.Serializer):
code = serializers.CharField()
value = serializers.CharField(required=False)
norm = serializers.CharField(allow_null=True, allow_blank=True)
class ResultSerializer(serializers.ModelSerializer):
code = ReviewSerializer()
value = ReviewSerializer()
norm = ReviewSerializer()
class Meta:
model = Result
fields = (
'code',
'value',
'norm'
)