Django modelSerializer form.is_valid() истинен, когда значения пусты
Когда я выполняю form.is_valid()
, возвращается true, за исключением branches_count и employee_count. Когда я запускаю form.save()
, он возвращает ключевые ошибки
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)
Это 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"
Мои поля модели имели значение blank=True, что означало, что валидация будет проходить для пустых значений. Поскольку я не хотел делать поля модели обязательными, но хотел, чтобы этот конкретный сериализатор требовал их для другого приложения, я добавил поле extra_kwargs в сериализатор, и это решило проблему
class GeneralInformationFormSerializer(serializers.ModelSerializer):
class Meta:
model = Business
fields = ['location', 'date_founded', 'employee_count', 'branches_count', 'business_premises']
# Ensure these values are availed and empty strings
extra_kwargs = {
'location': {'required': True, 'allow_blank': False},
'date_founded': {'required': True},
'business_premises': {'required': True, 'allow_blank': False}
}