django-rest-framework-从零开始-3-序列化类ModelSerializer的使用

Posted 南风丶轻语

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-rest-framework-从零开始-3-序列化类ModelSerializer的使用相关的知识,希望对你有一定的参考价值。

django-rest-framework-从零开始-3-序列化类ModelSerializer的使用

1、前言

我们之前提到创建序列化类,需要继承serializers.Serializer类,然后映射模型类的字段,然后重写create方法和update方法。这样的代码,看起来映射字段有一些重复代码,而且createupdate方法,遇到一个模型,需要重写一次,太麻烦了。

因此,我们可以使用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方法,直接在源代码中就可以看到。

github:https://github.com/rainbow-tan/learn-drf

以上是关于django-rest-framework-从零开始-3-序列化类ModelSerializer的使用的主要内容,如果未能解决你的问题,请参考以下文章

django-rest-framework-从零开始-2-序列化类serializers.Serializer的使用

手把手教你从零开始做一个好看的 APP

Python 小白从零开始 PyQt5 项目实战菜单和工具栏

软件工程学期总结

全文搜索引擎 Elasticsearch 入门教程

全文搜索引擎 Elasticsearch 入门教程