У меня есть простая модель:
class TestRentalObject(models.Model):
some_field = models.TextField()
build_year = models.PositiveSmallIntegerField(
blank=True,
null=True,
validators=[MinValueValidator(1300), MaxValueValidator(2100)],
)
с ModelSerializer:
class TestRentObjectSerializer(serializers.ModelSerializer):
class Meta:
model = TestRentalObject
fields = (
"some_field",
"build_year"
)
А вот поле ввода из формы:
<input type="number" class="input-group__input input-group__input_no-require is-invalid" id="field-rent.build_year" placeholder="" name="rent.build_year">
Когда я оставляю это поле пустым, сериализатор видит его как недействительный.
In [8]: data = {'some_field': 'some_text', 'build_year': ''}
In [9]: rs = TestRentObjectSerializer(data=data)
In [10]: rs.is_valid()
Out[10]: False
In [11]: rs.errors
Out[11]: {'build_year': [ErrorDetail(string='A valid integer is required.', code='invalid')]}
Я считаю, что проблема в том, что я получаю build_year как пустую строку, а не None. Но как это сделать правильно?