首页 文章

Rest框架序列化器只读

提问于
浏览
1

我想验证用户是否从只读字段更改了值 . 如果值已更改,则验证应返回错误消息 . 在我的例子中,start_date始终是常量(从数据库中读取) . 我想检查用户是否修改了此值 .

串行:

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():
    ...

update

当我将read_only设置为True时,我没有任何验证错误 . 我想检查用户是否更改了此字段 . 就像是:

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(数据=数据)

1 回答

  • 3

    read_only 设置为True怎么样?见here

    所以,基本上,你会:

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

相关问题