#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} }