I have a simple model:
class TestRentalObject(models.Model):
some_field = models.TextField()
build_year = models.PositiveSmallIntegerField(
blank=True,
null=True,
validators=[MinValueValidator(1300), MaxValueValidator(2100)],
)
with ModelSerializer:
class TestRentObjectSerializer(serializers.ModelSerializer):
class Meta:
model = TestRentalObject
fields = (
"some_field",
"build_year"
)
And here is input field from form:
<input type="number" class="input-group__input input-group__input_no-require is-invalid" id="field-rent.build_year" placeholder="" name="rent.build_year">
When I keep this field empty, serializer sees it as invalid.
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')]}
I believe the problem is that I get build_year as an empty string and not None. But how to do it correctly?