[Django Rest Framework] Dúvida: Como validated_data é manipulado em um Serializer
Oi Turma! Se alguem puder me ajudar, quero aprofundar meu entendimento em DRJ e estou patinando em uma coisa esssncial... :(
Estou com uma dúvida inicial para entender e fixar bem o funcionamento de um serializer
, tenho um código que recebe através de um HTTP Post Request com o Body:
{
"description": "Avaliação com Competencias",
"employee": 1
}
def post(self, request):
serializer = EvaluationSerializer(data = request.data, context={"request": request})
if serializer.is_valid():
serializer.save()
return Response("OK")
else:
return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
O serializer
seria algo como:
class EvaluationSerializer(serializers.ModelSerializer):
description = serializers.CharField(min_length = 5)
def create(self, validated_data):
evaluation = super(EvaluationSerializer, self).create(validated_data)
user = User.objects.get(id=validated_data["employee"].id)
Eu não entendo o que acontece por baixo dos panos, pois se eu uso
user = User.objects.get(id=validated_data["employee"])
dá erro, pois id
está recebendo um objeto do tipo User
, mas na verdade eu enviei "employee": 1
no request.
Por outro lado, se eu uso:
user = User.objects.get(id=self.initial_data["employee"])
, dá certo!
O que acontece após o serializer.is_valid(), eu não deveria manter a mesma informação do body tanto no validated_data quanto no self.initial_data?