序列化器字段

序列化中的字段可以根据用途分为三种:

  1. 既用于序列化,也用于反序列化
    普通字段

  2. 只用于序列化 (读) (read_only)
    外键字段

  3. 只用于反序列化 (写) (write_only)
    外键字段

image-20230202195740169

外键字段自定义序列化

由于普通字段比较简单,以下针对外键字段进行总结:

序列化:

模型表 ----> 序列化类 ----> 前端

自定义序列化通常使用于外键字段,因为这些字段无法直接跟数据关联,如果在序列化器中直接填写外键字段前端会出现如下现象:

image

自定义序列化是为了给前端返回json格式字符串,而想要自定义序列化有两种方法:

在模型类中写方法

  1. 在模型类中写方法

数据库查询到数据 ---> 执行模型类中方法 --返回值--> 序列化类中字段 --序列化-> 前端

​ 如果模型类中方法返回一个字典 ,在序列化类中使用DictField序列化。
​ 如果模型类中方法返回一个列表 ,在序列化类中使用ListField序列化。

image-20230202194318403

在序列化类中写方法

  1. 在序列化类中写方法,配合SerializerMethodField字段

SerializerMethodField:
这是一个只读字段。
它通过调用附加到的序列化程序类上的方法来获取其值。
它可用于将任何类型的数据添加到对象的序列化表示中。

数据库查询到数据 ---> 执行SerializerMethodField() ---> 执行序列化类中方法 --返回值--> json.dumps --序列化-> 前端

image-20230202194652536

反序列化

模型表 <---- 序列化类 <---- 前端

外键字段反序列化保存

模型表 <-- 序列化类中create、updata等方法-- 序列化类中字段 <--主键-- 前端

image-20230202205141921