模型序列化器

模型序列化器编写方式

之前的序列化器,很明显可以感觉到,如果模型类字段少了,还行,但是模型字段越来越多,那么开发者序列化器里所要复刻的字段也要越来越多,很麻烦奥

而且还得手动实现updatecreate方法,而且光写了序列化器字段还不行,还得有字段属性

于是乎,有了现在的与模型类关联的序列化器,可以更加方便的进行字段映射以及内置方法的编写,简直是太棒了👍


模型类关联序列化器大概总结有如下三个特性,一个缺点

  • 特点

    • 基于模型类自动生成一系列字段

    • 自动生成的系列字段,同时还包含uniquemax_length等属性校验

    • 包含默认的createupdate的实现

  • 缺点

    • 不会自动映射模型类字段的default属性


那么模型类关联序列化器用啥呢?用的是新的序列化器基

from rest_framework.serializers import ModelSerializer

比如一个学生模型类

from django.db import models
class Student(models.Model):
    # 姓名 年龄 性别 分数
    name = models.CharField(max_length=20,verbose_name="姓名")
    age = models.IntegerField(verbose_name="年龄")
    gender = models.CharField(max_length=10,verbose_name="性别")
    score = models.IntegerField(verbose_name="分数")
    # 定义元类,指定表名
    class Meta:
        db_table = 'students'
    def __str__(self):
        return self.name

按照之前的普通序列化写法,你需要同步一个字段,并将字段属性也要记得同步,非常麻烦 但通过与模型类关联的序列化器就很简单了

  1. 首先通过继承ModelSerializer基类

  2. 通过序列化器元类属性中的model属性关联模型类

  3. 通过序列化器元类属性中的fields属性指明序列化器需要处理的字段

# 序列化器文件---模型序列化器
from rest_framework import serializers
from myapp.models import Student
#                               继承模型序列化器
class StudentModelSerializer(serializers.ModelSerializer):
    # 定义元类
    class Meta:
        model = Student    # 指明需要进行序列化的模型类
        fields = "__all__"  # 指明模型类的全部字段参与序列化和反序列化的操作

模型类关联的序列化器和普通的序列化器使用方法一样

使用序列化器返回当前所有的商品数据,还是像之前一样传入instance参数即可,还要记得由于是多个商品,不是单独数据,要记得加many=True参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值