Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

323
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!