update tutorial queryset framework espaƱol errors create python django rest django-rest-framework

python - tutorial - Se requiere campo de serializador de Django REST Framework=falso



serializer create django (3)

de la documentación:

read_only Establezca esto en True para asegurarse de que el campo se utiliza al serializar una representación, pero no se usa cuando se actualiza una instancia durante la deserialización.

Predeterminado a falso

requerido Normalmente, se generará un error si no se proporciona un campo durante la deserialización. Establézcalo en falso si no es necesario que este campo esté presente durante la deserialización.

El valor predeterminado es True.

Así que tengo un modelo que tiene un campo que no admite nulos, pero quiero que se rellene en el método pre_save, por lo que he configurado el campo required=False en el serializador, pero parece que no funciona. Todavía estoy recibiendo un error al guardar el registro.

class FavoriteListSerializer(serializers.ModelSerializer): owner = serializers.IntegerField(required=False) class Meta: model = models.FavoriteList

Actualización: He agregado serializer_class = serializers.FavoriteListSerializer al ViewSet, ahora en lugar de get This field is required , creo que pasó la validación pero luego estoy obteniendo This field cannot be null. He comprobado que el método pre_save no se está ejecutando, ¿alguna idea?


En caso de que alguien aterrice aquí con un problema similar, preste atención a los siguientes atributos junto con los required :

allow_blank :

Si se establece en True , la cadena vacía se debe considerar un valor válido.

allow_null :

Normalmente se generará un error si se pasa None a un campo de serializador.

required :

Normalmente se generará un error si no se proporciona un campo durante la deserialización.

Estaba rebuscando para descubrir por qué estaba obteniendo un error de validación con required=False donde había perdido el atributo allow_null .



Sí, me encontré con este problema en algún momento también. También debe actualizar las exclusiones de validación.

class FavoriteListSerializer(serializers.ModelSerializer): owner = serializers.IntegerField(required=False) class Meta: model = models.FavoriteList def get_validation_exclusions(self): exclusions = super(FavoriteListSerializer, self).get_validation_exclusions() return exclusions + [''owner'']