Django Rest Framework and JSONField

后端 未结 11 2010
眼角桃花
眼角桃花 2020-11-29 03:28

Given a Django model with a JSONField, what is the correct way of serializing and deserializing it using Django Rest Framework?

I\'ve already tried crating a custom

11条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-29 04:11

    To serialize a data from a request you can use the serializers.ModelSerializer

    serializers.py

    from rest_framwork import serializers
    class FinalSerializer(serializers.ModelSerializer):
    class Meta:
        model=Student
        fields='__all__'
    

    views.py

    import io
    from yourappname.serializers import FinalSerializer #replace your app name
    from rest_framework.parsers import JSONParser
    from rest_framework.views import APIView
    from rest_framework.parsers import JSONParser,MultiPartParser,FormParser
    from rest_framework.response import Response
    
    
    class DataList(APIView):
    
    
        parser_classes = (JSONParser,MultiPartParser,FormParser) #If you are using postman
        renderer_classes = (JSONRenderer,)
        #Serialize
        def get(self,request,format=None):
            all_data=Student.objects.all()
            serializer=FinalSerializer(all_data,many=True)
            return Response(serializer.data)#Will return serialized json data,makes sure you have data in your model
        #Deserialize
        #Not tried this function but it will work
        #from django documentation
        def djson(self,request,format=None):
            stream = io.BytesIO(json)
            data = JSONParser().parse(stream)
            serializer = FinalSerializer(data=data)
            serializer.is_valid()
            serializer.validated_data
    

提交回复
热议问题