django-rest-framework-从零开始-3-序列化类ModelSerializer的使用
django-rest-framework-从零开始-3-序列化类ModelSerializer的使用
1、前言
我们之前提到创建序列化类,需要继承serializers.Serializer
类,然后映射模型类
的字段,然后重写create
方法和update
方法。这样的代码,看起来映射字段有一些重复代码,而且create
和update
方法,遇到一个模型,需要重写一次,太麻烦了。
因此,我们可以使用serializers.ModelSerializer
类代替serializers.Serializer
类
2、使用ModelSerializer
类代替Serializer
类
- 重写
student_manager/serializers.py
文件中的StudentSerializer
类
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
fields = '__all__'
图示
-
查看自动生成的序列化类
在
student_manager/debug_student_serializer.py
中添加以下代码def show_serializer(): serializer = StudentSerializer() print(f"serializer:{serializer}")
图示
运行后
serializer:StudentSerializer():
id = IntegerField(read_only=True)
student_id = CharField(help_text='学号最大长度为30', label='学号', max_length=30, validators=[<UniqueValidator(queryset=Student.objects.all())>])
student_name = CharField(help_text='学号最大长度为30', label='姓名', max_length=30)
student_sex = ChoiceField(choices=[(1, '男'), (0, '女')], help_text='1->男,0->女', label='性别')
student_birthday = DateField(help_text='学生生日', label='生日')
created = DateTimeField(label='创建时间', read_only=True)
updated = DateTimeField(label='修改时间', read_only=True)
说明:
-
通过Meta类中的model指定要序列化的模型类即可
-
完美的把模型类搬过来了,还添加了唯一属性校验器,帮助信息,标签等信息,比自己手动写序列化类方便多了,同时还重写了create方法和update方法,直接在源代码中就可以看到。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示