29.Django_framework_模型序列化器ModelSerializer

这一节再简化一下上一节的序列化器,用模型类序列化器自动生成序列化器,

1. ModelSerializer类

ModelSerializer类能够让我们自动你创建一个具有对应模型类中,相对应字段的Serializer
ModelSerializer类直接继承了Serializer类,不同的是:

  1. 它根据model模型的定义,自动生成默认字段。
  2. 它自动生成序列化器的验证器,比如unique_together验证器。
  3. 它实现了简单的.create()方法和.update()方法。
    声明一个ModelSerializer类,(用之前写好的序列化器示例,注释之前的类属性字段,修改成ModelSerializer类)
class ProjectsModelSerializer(serializers.ModelSerializer):
    name = serializers.CharField(label='用户名', max_length=128, help_text='用户名', write_only=True,
                                     validators = [
                                         UniqueValidator(
                                             queryset=Projects.objects.all(),
                                            message="该项目名称已存在")
                                         ,is_unique_user_name # 在这里调用自定义校验器
                                      ],
                                 error_messages={
   'max_length','长度不能超过10个字节'}
                                      )
    class Meta:
        #1.指定参考哪一个模型类
        model = Projects
        #2.指定模型类都使用哪些字段,来生成序列化器
        #使用全部字段
        # fields = "__all__"
        #使用部分字段
        # fields = ('id','name','leader','tester','programer')

        #指定不需要进行序列化的字段
        exclude = ('publish_app','desc')

注意:由于对应了model类的字段,会存在必填字段,所以fileds=__all__exclude慎重使用

进入shell查看ModelSerializer类自动创建了哪些字段和验证器
在这里插入图片描述

2. 明确指定字段

当觉得全自动的字段不满足需求时,可以通过在ModelSerializer类上显式声明字段,从而增加额外的字段或者重写默认的字段,就和在Serializer类一样的。
比如:

class ProjectsModelSerializer(serializers.ModelSerializer):

#显示重写字段
    name = serializers.CharField(label='用户名', max_length=128, help_text='用户名', write_only=True,
                                     validators = [
                                         UniqueValidator(
                                             queryset=Projects.objects.all(),
                                            message="该项目名称已存在")
                                         ,<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值