0

I need to create a instance of my model, but in my request.data i don't have the correct information for my serializer.

class CotizacionViewSet(viewsets.ModelViewSet):
   serializer_class = CotizacionSerializer
   permission_classes = [IsAuthenticated]

        def create(self, request):
            serializer = self.serializer_class(data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response({'message': 'Cotizacion creada correctamente.'}, status=status.HTTP_201_CREATED)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

and my serializer is

CotizacionSerializer(serializers.ModelSerializer):
    cliente = ClienteSerializer()
    curso = CursoCatalogoSerializer()

    class Meta:
        model = Cotizacion
        exclude = ('state', 'created_date', 'modified_date', 'deleted_date')

i want the information that gives me the serilizers from cliente and from curso but i don't know how to create a Cotizacion.

1 Answers1

0

To create Cotizacion you can overwrite create method in the serializer.

class CotizacionSerializer(serializers.ModelSerializer):
    cliente = ClienteSerializer()
    curso = CursoCatalogoSerializer()

    class Meta:
        model = Cotizacion
        exclude = ('state', 'created_date', 'modified_date', 
                  'deleted_date')

    def create(self, validated_data):
        cliente = validated_data.pop("cliente")
        curso = validated_data.pop("curso")

        # or you just get the data like
        # cliente = validated_data["cliente"]
        # then create Cotizacion
        cotizacion = Cotizacion.objects.create(**validated_data)

        return cotizacion

I am not sure about relation between Cotizacion and cliente/curso. However, you can perform the required operations in this method. I may be able help further if you could show us the models.

sunsun
  • 506
  • 3
  • 6