首页 > 其他分享 >django-rest-framework-从零开始-3-序列化类ModelSerializer的使用

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

时间:2023-03-21 16:26:03浏览次数:51  
标签:ModelSerializer rest label student serializers 序列化 serializer

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__'

图示

image-20230316155825121

  • 查看自动生成的序列化类

    student_manager/debug_student_serializer.py中添加以下代码

    def show_serializer():
        serializer = StudentSerializer()
        print(f"serializer:{serializer}")
    

图示

image-20230316160628845

运行后

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)

image-20230316160249218

说明:

  • 通过Meta类中的model指定要序列化的模型类即可

  • 完美的把模型类搬过来了,还添加了唯一属性校验器,帮助信息,标签等信息,比自己手动写序列化类方便多了,同时还重写了create方法和update方法,直接在源代码中就可以看到。

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

标签:ModelSerializer,rest,label,student,serializers,序列化,serializer
From: https://www.cnblogs.com/rainbow-tan/p/17240387.html

相关文章

  • django-rest-framework-从零开始-2-序列化类serializers.Serializer的使用
    django-rest-framework-从零开始-2-序列化类serializers.Serializer的使用1、前言我们编写的django程序,需要与前端或者其他程序交互,通常会提供出自己的API接口,此时需要把......
  • JAVA -适合新手和复习(Restart)
    作为22届专科生,在没有经历和学历的情况下找一份得体的工作 是多么“奢侈”,世上岂无千里马,人中难得九方皋.废话太多我们开始吧!JAVA从这里开始 Java的历史(不感兴趣直......
  • 如何自动化测试你的接口?—— Rest Assured
    前言不知道大家的项目是否都有对接口API进行自动化测试,反正像我们这种小公司是没有的。由于最近一直被吐槽项目质量糟糕,只能研发自己看看有什么接口测试方案。那么在本文......
  • Forest与Sa-token
    Forest简介什么是Forest?Forest是一个开源的JavaHTTP客户端框架,它能够将HTTP的所有请求信息(包括URL、Header以及Body等信息)绑定到您自定义的Interface方法......
  • FastJson序列化后Date日期类型变成时间戳
    日志执行结果:以上可以看到productionDate通过FastJson序列化后变成时间戳了解决方式一:日期属性字段上添加@JSONField注解@JSONField(format="yyyy-MM-dd")priva......
  • django-rest-framework-从零开始-1-创建项目
    django-rest-framework-从零开始-1-创建项目1、下载模块python-mpipinstalldjangopython-mpipinstalldjangorestframework本次学习基于python3.9,python安装......
  • django-rest-framework-从零开始-3-序列化类ModelSerializer的使用
    django-rest-framework-从零开始-3-序列化类ModelSerializer的使用1、前言我们之前提到创建序列化类,需要继承serializers.Serializer类,然后映射模型类的字段,然后重写crea......
  • django-rest-framework-从零开始-2-序列化类serializers.Serializer的使用
    django-rest-framework-从零开始-2-序列化类serializers.Serializer的使用1、前言我们编写的django程序,需要与前端或者其他程序交互,通常会提供出自己的API接口,此时需要把......
  • PHP 将空数组统一 json 序列化为 [] 的弊端
    在PHP中表示空的map或空数组都是以空数组形式,在转化为json数据时,会将空数组统一json序列化成 ​​[]​​,这样就存在一个类型问题。以前我们在与前端交互时一般是与弱类......
  • Spring Boot @RestControllerAdvice注解详解
    一、@RestControllerAdvice注解的基础使用我们先来看一下@RestControllerAdvice注解的基本使用方法。在SpringBoot项目中,可以通过在类上添加@RestControllerAdvice......