Django REST framework:Serializer

2021-11-29  本文已影响0人  安静的冰棒

在定义Model时,我们通过models.<FieldName>获取了各种不同的字段,作为数据库中表的一个列。

而在Serializer中,也需要通过serializers.<FieldName>的形式获取对应Model的字段,用来在JSON数据和Python数据类型之间进行转换,此外还可以根据Field中传入的属性进行校验、设置默认值。

一、serializers.Field中的公共参数

这里根据官方文档https://www.django-rest-framework.org/api-guide/fields/#serializer-fields总结了一些常用的公共参数:

(1)read_only:设置为True时,用于在序列化输出时使用该字段,但在反序列化创建或更新实例时不使用该字段。

(2)write_only:设置为True时,更新或创建实例时可以使用该字段,但在序列化输出时不显示该字段。

(3)required:设置为False,表示在反序列化更新和创建时,该字段不是必须的。

(4)default:反序列化时,为该字段设置一个默认值,同时包含关键字default和required是无效的,并且会引发错误。

(5)allow_null:设置为True时,表示序列化输出时,允许None作为有效值。

(6)allow_blank:设置为True时,表示在反序列化时,该字段的值可以为空。

二、serializers的Field

(1)布尔字段:BooleanField、NullBooleanField

(2)字符串字段:CharField、EmailField

(3)数字字段:IntegerField、FloatField、DecimalField

(4)日期和时间字段:DateTimeField、DateField、TimeField、DurationField

(5)文件上传字段:FileField、ImageField

(6)隐藏字段:HiddenField表示不根据用户输入取值的字段类,而是从默认值或可调用值中取值

(7)序列化方法字段:SerializerMethodField,通过调用序列化器类上的方法来获取它的值

上一篇下一篇

猜你喜欢

热点阅读