Я хочу проверить, было ли значение изменено пользователем из поля только для чтения. Если значение было изменено, валидация должна вернуть сообщение об ошибке. В моем случае start_date всегда является константой (читается из базы данных). Я хочу проверить, изменило ли пользователь это значение.Сериализатор остальной среды только для чтения
Serializer:
class IntervalSerializer(serializers.Serializer):
start_date = serializers.DateField(allow_null=False, input_formats=INPUT_FORMATS_DATE)
end_date = serializers.DateField(allow_null=False, input_formats=INPUT_FORMATS_DATE)
Мое мнение:
START_DATE = get_start_date()
serializer = IntervalSerializer(data=data)
if serializer.is_valid():
...
обновление
Когда я установил read_only Истина у меня нет каких-либо ошибок проверки. Я хочу проверить, изменилось ли это поле пользователем. Что-то вроде:
START_DATE = get_start_date() # from db
data['start_date'] = get_not_allowed() #when user send date i.e. in curl
serializer = IntervalSerializer(data=data, initial={'start_date': START_DATE})
if serializer.is_valid(): #should not pass because data['start_date'] is overriden
IntervalSerializer (данные = данные)
проверок проходят, но у меня нет какого-либо ошибка, когда поле изменения пользователя read_only –
@ user3455448 вы можете вызвать исключение внутри 'update' методу из сериализатор, если предоставленный данными start_date не соответствует старому. – soulseekah