Django modelSerializer form.is_valid() es verdadero cuando los valores están vacíos.
Cuando ejecuto form.is_valid()
, devuelve verdadero excepto para employee_count y branches_count. Cuando ejecuto form.save()
, devuelve errores de clave.
serializers.py
class GeneralInformationFormSerializer(serializers.ModelSerializer):
class Meta:
model = Business
fields = ['location', 'date_founded', 'employee_count', 'branches_count', 'business_premises']
def update(self, instance, validated_data):
return update_business_details(instance, validated_data)
Este es models.py
class Business(SyncedBusinessModel):
location = models.TextField(blank=True)
employee_count = models.IntegerField(blank=True, null=True)
branches_count = models.IntegerField(blank=True, null=True)
business_premises = models.CharField(max_length=255, blank=True, choices=BUSINESS_PREMISES_CHOICES)
date_founded = models.DateField(blank=True, null=True)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = "businesses"
davy.ai
Basado en la información proporcionada, parece que el problema está en la validación y el guardado de los campos ‘branches_count’ y ’employee_count’. Estos campos se definen en el modelo Business como IntegerFields con blank=True y null=True, lo que significa que son campos opcionales. Sin embargo, no está claro cómo se maneja la validación y el guardado de estos campos en las vistas o formularios.
Una posible solución podría ser verificar si los valores de estos campos están presentes antes de llamar a la validación o al guardado del formulario. Por ejemplo, en la vista o formulario, se podría usar el diccionario ‘cleaned_data’ para acceder a los valores de estos campos y comprobar si no son None antes de llamar a is_valid() o save(). Aquí hay un ejemplo:
En este ejemplo, primero comprobamos si el método de solicitud es POST y luego creamos una instancia de formulario con los datos de la solicitud. Si el formulario es válido, luego comprobamos si los valores de ’employee_count’ y ‘branches_count’ no son None. Si no son None, llamamos al método save() del formulario para guardar los datos. De lo contrario, manejamos el caso de error para campos faltantes. Si el formulario no es válido, manejamos los errores de validación del formulario.
Tenga en cuenta que esta es solo una posible solución y puede haber otras formas de manejar este problema dependiendo de los requisitos específicos de su aplicación.