Rest框架序列化程序只读

2024-10-01 07:27:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我想验证用户是否从只读字段更改了值。如果值已更改,验证应返回错误消息。在我的例子中,起始日期总是常量(从数据库读取)。我想检查用户是否修改了这个值。在

序列化程序:

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)

我的观点:

^{pr2}$

更新

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


Tags: falseinputdatadate检查用户错误startnull
1条回答
网友
1楼 · 发布于 2024-10-01 07:27:04

只读设为True怎么样? 见here

所以,基本上,你应该:

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

相关问题 更多 >