1.定义序列化器类

2.字段校验

3.从表数据操作(父表返回从表数据)

一、关联字段说明(例:父表模型类名:Project;从表模型类名:Interfaces。关联关系,一个或多个Interfaces对应一个Project)

1.可以定义PrimaryKeyRelatedField来获取关联表的外键值

2.如果通过父表获取从表数据,默认需要使用从表模型类名小写_set作为序列化器类中的关联字段名称

3.如果在定义模型类的外键字段时,指定了related_name参数(从表models.py文件中,在与父表的关系中添加),那么会把related_name参数名作为序列化器类中的关联字段名称

4.PrimaryKeyRelatedField字段,要么指定read_only=True,要么指定queryset参数,否则会报错

5.如果指定了read_only=True,那么该字段仅序列化输出

6.如果指定了queryset参数(关联表的查询集对象:queryset=Interfaces.objects.all()),用于对参数进行校验

7.如果关联字段有多个值,那么必须一案件many=True,一般父表获取从表数据时,关联字段需要指定

interfaces_set = serializers.PrimaryKeyRelatedField(label='项目所属接口id', help_text='项目所属接口id', read_only=True,many=True)

二。从表数据返回

1).从表数据返回方式一:PrimaryKeyRelatedField,返回从表id

inner = serializers.PrimaryKeyRelatedField(label='项目所属接口id', help_text='项目所属接口id', read_only=True, many=True)

2).从表数据返回方式二:StringRelatedField字段返回操作:返回从表__str__方法返回值

1.使用StringRelatedField字段,将关联字段模型类中的__str__方法的返回值作为该字段的值

2.StringRelatedField字段默认添加了read_only=True,该字段仅序列化输出

inner = serializers.StringRelatedField(many=True)

3).从表数据返回方式三:SlugRelateField字段返回某个从表的指定的字段值

1.使用SlugRelateField字段,将关联模型类中的某个字段,作为该字段的值(slug_field='查询字段值')

2.如果指定了read_only=True,那么该字段仅序列化输出

3.如果该字段需要进行反序列化输入,那么必须得指定queryset参数,同时关联字段必须有唯一约束(queryset=Interfaces.objects.all())

inner = serializers.SlugRelatedField(slug_field='name', many=True, queryset=Interfaces.objects.all())

4).从表数据返回方式四:返回从表自定义数据

1.需要重新定义一个从表的序列化类,并指定参数(详情见:InterfacesSerilizer类)

interfaces_set = InterfacesSerilizer(label='所属接口信息', help_text='所属接口信息', read_only=True, many=True)

 


爱折腾的小测试