Некоторые рекомендации по структуре json для сериализатора django DRF
У меня есть модель, структура которой выглядит следующим образом:
model:
server_name: str
description: str
owner: str
но приложение, отправляющее данные в мое приложение, использует формат json, для которого я не знаю, как создать сериализатор. Для нескольких записей это выглядит следующим образом
{
"server1": {
"description": "desc of server 1",
"owner": "service name" },
"server2": {
"description": "desc of server 2",
"owner": "service name"
}
}
но я не уверен, как преобразовать его в нечто, соответствующее моей модели. Вот структура, которую я хотел бы видеть в сериализаторе
[
{
"server_name": "server1",
"description": "desc of server 1",
"owner": "service name"
},
{
"server_name": "server2",
"description": "desc of server 2",
"owner": "service name"
}
]
Есть предложения по этому поводу?
с помощью документации ListField можно попробовать следующее:
serializers.py:
from rest_framework import serializers
class ServerSerializer(serializers.Serializer):
jsonData = serializers.ListField(
child=serializers.JSONField()
)
views.py:
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .serializers import ServerSerializer
class ServerAPIView(APIView):
serializer_class = ServerSerializer
def post(self, request):
data = request.data
serializer = self.serializer_class(data=data)
serializer.is_valid(raise_exception=True)
# Get data
json_data = data.get('jsonData')
for item in json_data:
server_name = item['server_name']
description = item['description']
owner = item['owner']
YourModel.objects.get_or_create(
server_name=server_name, description=description,
owner=owner)
result = YourModel.objects.all()
serializer = self.serializer_class(result, many=True)
return Response(serializer.data, status=status.HTTP_201_CREATED)