Функция Django ModelSerializer form.is_valid() имеет значение true, если значения пусты

#django #django-models #django-rest-framework #django-templates

Вопрос:

Когда я запускаю form.is_valid() , он возвращает значение true, за исключением branche_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"  

Ответ №1:

В полях моей модели было пусто=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}  }