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决定每个字段的具体返回的格式