Django 序列化程序:为什么 source 参数不起作用?

Django serializers: Why source argument in does not work?

我的 Django 项目中有以下序列化程序:

class MySerializer(serializers.Serializer):
    CheckList1 = serializers.CharField(source='source_field', default="pass")

我用它来进行数据验证,像这样:

input_serializer = MySerializer(data=request.data)
input_serializer.is_valid(raise_exception=True)

源参数似乎不起作用。我向那里传递了如下所示的请求数据:

request.data = {
   source_field = "Failed"
}

当我打印 input_serializer.data 时,CheckList1 的值是 pass。有人知道为什么吗?

使用.validated_data属性。

希望这个例子能帮助你做到这一点,

class Foo(serializers.Serializer):
    foo = serializers.CharField(source='bar')


input_data = {
    'foo': 'this data is for foo',
    'bar': 'this data is for bar'
}

f = Foo(data=input_data)
f.is_valid(True)

print('f.validated_data', dict(f.validated_data))
# f.validated_data {'bar': 'this data is for foo'}
print('f.data', f.data)
# f.data {'foo': 'this data is for foo'}