Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

420
Vistas
¿Hay alguna manera de permitir datos en blanco para Django restframework?

Tengo un modelo de productos en el que quiero tener campos opcionales que el usuario no requiere cada vez que intento ingresar datos vacíos, arroja un error 400 al usuario, lo que significa que los datos serializados no son válidos

vistas.py

 def products(request): if request.method == 'GET': products = Product.objects.filter(user=request.user) serializer = ProductSerializer(products, many=True) return Response(serializer.data) elif request.method == 'POST': serializer = ProductSerializer(data=request.data) serializer.initial_data['user'] = request.user.pk if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

serializador.py

 class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product fields = '__all__'

modelos.py

 class Product(models.Model): name = models.CharField(max_length=50) description = models.TextField(blank=True) price = models.FloatField() quantity = models.IntegerField(blank=True) user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) shop = models.ForeignKey(Shop, on_delete=models.DO_NOTHING) discount = models.FloatField(default=0)
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

La forma en que DRF entiende qué campo se requiere es mirando la opción de su campo de modelo llamada null ( docs ).

Si null=True , DRF manejará este campo como no requerido

Si no desea configurar esta opción en la clase de su modelo, puede hacer que funcione en la clase de serializador a través de la opción required , por ejemplo

 class ProductSerializer(serializers.ModelSerializer): name = serializer.CharField(required=False) class Meta: model = Product fields = '__all__'
over 4 years ago · Santiago Trujillo Denunciar

0

Tienes que especificar los campos explícitamente y agregar required=false así:

 class ProductSerializer(serializers.ModelSerializer): # We make the description field empty description = serializers.CharField(max_length=200, required=False) class Meta: model = Product fields = ['name', 'description', 'user' , 'shop' ...] # Each field you want in the response. # Or you can use extra_kwargs since DRF 3.12.x extra_kwargs = {"description": {"required": False, "allow_null": True}}
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda