tstr
tstr

Reputation: 1276

Rest framework serializer read only

I want to validate if value was changed by user from read only field. If value was changed validation should return error message. In my case start_date is always constants (read from database). I want to check if user modified this value.

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)

My view:

START_DATE = get_start_date()
serializer = IntervalSerializer(data=data)
if serializer.is_valid():
    ...

update

When I set read_only to True I don't have any validation errors. I want check if user changed this field. Something like:

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(data=data)

Upvotes: 2

Views: 4295

Answers (1)

AdelaN
AdelaN

Reputation: 3536

How about just setting read_only to True ? See here

So, basically, you would have:

start_date = serializers.DateField(read_only=True, allow_null=False, input_formats=INPUT_FORMATS_DATE)

Upvotes: 3

Related Questions