You cannot call `.save()` after accessing `serializer.data`.If you need to access data before committing to the database

written codes:

serializerdata = serializers.CreateSerializer(data=request.data)
if serializerdata.is_valid():
    user_id = serializerdata.data.get('user_id')
    if user_id==2:
        serializerdata.save(i_created_by=request.user)
        return JsonResponse({"message": "success"}) 
    else:
        return JsonResponse({"message": "user invalid"})    
else:
    return JsonResponse({"message": "error"})   

Error Showing..

You cannot call `.save()` after accessing `serializer.data`.If you need to access data before committing to the database then inspect 'serializer.validated_data' instead.  

As the above error says, “If you need to access data before committing to the database then inspect ‘serializer.validated_data’ instead.

Solution:: we can call this to access the data, like:-

user_id = serializerdata.validated_data.get('user_id')

full code is here..

serializerdata = serializers.CreateSerializer(data=request.data)
if serializerdata.is_valid():
    user_id = serializerdata.validated_data.get('user_id')
    if user_id==2:
        serializerdata.save(i_created_by=request.user)
        return JsonResponse({"message": "success"}) 
    else:
        return JsonResponse({"message": "user invalid"})    
else:
    return JsonResponse({"message": "error"})   

Check on stackoverflow: https://stackoverflow.com/questions/58538306/you-cannot-call-save-after-accessing-serializer-data/58538421#58538421

Leave a Reply

Your email address will not be published. Required fields are marked *