概述
序列化
一:序列化
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()
最后
以上就是超帅小天鹅为你收集整理的restframework--序列化的全部内容,希望文章能够帮你解决restframework--序列化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复