序列化,序列化高级

2020-04-16  本文已影响0人  Ancestor楠

序列化

序列化:把对象(Dict)转成可传输数据(JSON)

反序列化:把传输数据(json)转成对象(Dict)

序列化高级

StringRelatedField

如果想让序列化变成字符串,那这个字段就变成了只读属性,反序列化就不支持了

字段名 必须在模型里面

StringRelatedField 将返回一个对应关系 model 的 unicode() 方法的字符串。

PrimaryKeyRelatedField

如果多个需要加many=True   read_only=True

如果单个需要加read_only=True

HyperlinkedRelatedField

使用 HyperlinkedRelatedField 将返回一个超链接,该链接指向对应关系 model 的详细数据,view-name 是必选参数,为对应的视图生成超链接。

错误解决:

在视图中所有使用CategorySerializerde的地方加上context={'request': request}

serializer = CategorySerializer(categorys, many=True, context={'request': request})

SlugRelatedField

使用 SlugRelatedField 将返回一个指定对应关系 model 中的字段,需要参数 slug_field 中指定字段名称。

HyperlinkedIdentityField

使用 HyperlinkedIdentityField 将返回指定 view-name 的超链接的字段。

HyperlinkedModelSerializer

HyperlinkedModelSerializer 类与 ModelSerializer 类相似,只不过它使用超链接来表示关系而不是主键。

嵌套序列化关系模型

顾名思义就是序列化里面有另一个序列化类

depth

这个字段可以用来深度遍历

SerializerMethodField

通过这个属性我们可以自定义一些属性

source

序列化的时候指定数据源

to_representation方法

序列化器的每个字段实际都是由该字段类型的to_representation方法决定格式的,可以通过重写该方法来决定格式。

上一篇下一篇

猜你喜欢

热点阅读