Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

317
Visualizações
El objeto de tipo '' no es JSON serializable en DRF

Tengo este código en Django usando el marco REST. Aquí están mis modelos, serializador, vistas:

modelo:

 class Car(AbstractTimeTrackable, models.Model): production_type = models.ForeignKey( 'cars.CarProductionType', on_delete=models.PROTECT, related_name='cars', verbose_name=_('production_type') ) warehouse = models.ForeignKey( 'warehouses.Warehouse', on_delete=models.SET_NULL, verbose_name=_('warehouse'), related_name='cars', blank=True, null=True, ) class Meta: verbose_name = _('Auto') verbose_name_plural = _('Auto') def __str__(self): return str(self.id)
 class Reservation(AbstractTimeTrackable, models.Model): is_active = models.BooleanField( default=False, verbose_name=_('is_active') ) cars = models.ManyToManyField( 'cars.Car', verbose_name=_('ID cars') ) class Meta: verbose_name = _('Reservation') verbose_name_plural = _('Reservation') def __str__(self): return str(self.id)

serializador:

 class ReservationSerializer(serializers.ModelSerializer): days_count = serializers.IntegerField(required=True) cars = serializers.PrimaryKeyRelatedField(queryset=Car.objects.all(), many=True) class Meta: model = Reservation fields = [ 'id', 'is_active', 'cars' ] extra_kwargs = { 'id': {'read_only': True} } def create(self, validated_data): cars = validated_data.pop('cars') instance = super().create(validated_data) if cars: instance.cars.add(*cars) return instance

vista:

 class ReservationViewSet(CreateModelMixin, GenericViewSet): serializer_class = ReservationSerializer queryset = Reservation.objects.all() def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) serializer.save() return Response(status=status.HTTP_201_CREATED, data=serializer.validated_data)

Recibo este mensaje de error:

TypeError en /api/v1/reservations/ El objeto de tipo Car no es JSON serializable

ingrese la descripción de la imagen aquí

Solo necesito PrimaryKey of Cars; por eso uso PrimaryKeyRelatedField.

¿Cómo puedo resolver este error?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Debe devolver serializer.data en lugar de serializer.validated_data .

Eche un vistazo al código actualizado para ReservationViewSet :

 class ReservationViewSet(CreateModelMixin, GenericViewSet): serializer_class = ReservationSerializer queryset = Reservation.objects.all() def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) serializer.save() return Response(status=status.HTTP_201_CREATED, data=serializer.data)

la propiedad data está destinada a traducir la instancia del modelo al tipo de diccionario nativo de Python. Python Dictionary se puede serializar como una respuesta JSON.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda