django-rest-framework-从零开始-3-序列化类ModelSerializer的使用
Posted 南风丶轻语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法,直接在源代码中就可以看到。
以上是关于django-rest-framework-从零开始-3-序列化类ModelSerializer的使用的主要内容,如果未能解决你的问题,请参考以下文章
django-rest-framework-从零开始-2-序列化类serializers.Serializer的使用