restframework--序列化

序列化
一:序列化
1、写类,可以继承Serializer或者ModelSerializer
使用这种方式序列化时,对于特殊字段(一对多ForeignKey、多对多ManyToMany),serializers没有提供对应的字段,需要指定特殊的方式,因为obj.这个字段时,得到的是一个对象,所以我们对于ForeignKey,需要使用一个CharField字段,然后在这个字段中指定一个source属性,指定显示这个对象的那个字段。
对于多对多的字段,我们也要使用特殊的显示方式:SerializerMethodField(),指定为这种字段类型时,显示的结果为一个自定义的函数的返回值,这个自定义函数的名字必须是get_字段名,固定写法,接收一个obj对象,返回值就是该字段在序列化时的显示结果。
2、ModelSerializer中可以在类中书写

class xxx(ModelSerializer):
			class META:
				model = xxx  #对应的Model类
				fields = all #自动生成数据库的所有字段
				fields = ['','']#自定义显示数据库的字段
				depth = 1 

#自动序列化连表,比如说我们要取一个foreignkey的值,本来取出的是这个字段关联的id,但是depth=1,他就能将这个字段关联的id=xx的详细信息取出来,如果depth=2的时候,就能将该字段关联的表中再次关联外键的字段的详细信息取到。操作官方建议深度最好0-10,不要太深
3、生成链接

class BookSerializers(serializers.ModelSerializer):
		    publish= serializers.HyperlinkedIdentityField(
		                     view_name='publish_detail',
		                     lookup_field="publish_id",
		                     lookup_url_kwarg="pk")
		    class Meta:
		        model=Book
		        fields="__all__"
		        #depth=1

二:请求数据校验
is_valid()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值