序列化的一些用法

StringRelatedField

1、StringRelatedField返回的是字符串

2、返回一个具体的东西,需要在Category里加str方法

PrimaryKeyRelatedField

1、返回的是主键

2、访问文章时要加个read_only=True要不没法运行

3、分类下找文章要加many=True

HyperlinkedRelatedField

1、返回的是一个对应关系的模型超链接

2、一定要填的字段   view_name='category.detail',  view_name是返回超链接的,是 category.detail 的别名

read_only=True

lookup_field='id' 指的是按照数据库上的字段去找,默认值是pk

3、在所有文章需要使用序列化的地方都要加上上下文

在序列化里找到文章的地方 context={'requset': request}

4、多找一 :一定要记得加many=True

SlugRelatedField

1、返回的是model对应的一个字段

2、slug_field='name'  返回的分类的名字

slug_field='   ' 指定model里字段的某一个值来返回

HyperlinkedIdentityField

1、返回指定的超链接

2、view_name   、lookup_field        必传的参数

HyperlinkedModelSerializer

1、返回的也是超链接

2、只不过跟上面继承的类不一样

3、额外字段extra_kwargs可以使ModelSerializer添加或修改原有的选项参数

序列化嵌套

两个序列化嵌套一起

depth

可以用来深度遍历   建议写到二到三层

只要有数据关联就会找另一个数据序列化出来

SerializerMethodField

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

eg:想统计每个分类下有多少篇文章

source

1、序列化的时候指定数据源

2、具体属性返回什么样的值由to_representation决定

3、可以自定义ChoiceDisplayField 让支持可读可写

to_representation方法

to_representation决定每个字段的具体返回的格式

你可能感兴趣的:(序列化的一些用法)