Привет, когда отправляется запрос с данными
[{"valid_from": "0001-01-01T00:00:00",
"valid_to": "0001-01-01T00:00:00"}]
Как ограничить минимальный год до 2020 года, я попытался добавить валидаторы в модель, но сначала выполняется DRF, поэтому он не работает, как остановить это на уровне DRF. Если они передают date.min в моем сериализаторе, он вызывает overflowError: date value out of range
My solution
class ValidateMinDateSerialier(serializers.Serializer):
@staticmethod
def is_date(value):
if isinstance(value, str):
return re.findall(r'\d\d\d\d-\d\d-\d\d.+', value)
def to_internal_value(self, data):
invalid_dates = []
for key, value in data.items():
if self.is_date(value):
if not re.findall(r'2\d\d\d-\d\d-\d\d.+', value):
invalid_dates.append(key)
error_dict = {field: [_('Invalid date. The year must start with 2xxx')] for field in invalid_dates}
if error_dict != {}:
raise serializers.ValidationError(error_dict, code=400)
return super(ValidateMinDateSerialier, self).to_internal_value(data)
, а затем наследует ValidateMinDateSerialier
в моем сериализаторе. Но это нормально?
Я должен поставить его на каждый сериализатор, который принимает даты, есть ли глобальный способ сделать это?