模型类序列化器-modelserializer(代码片段)

liqianxin liqianxin     2022-12-05     292

关键词:

模型类序列化器

1 简介

drf提供了模型类序列化器:Model Serializer。作用就是简化对应django模型类的序列化器的定义。

ModelsSerializer与常规的Serializer相同,但提供了:

  1. 基于模型类自动生成一系列字段
  2. 基于模型类自动为Serializer生成Validators,比如字段唯一的校验器
  3. 包含默认的create()和update()实现。

2 定义

比如我们创建一个DepartmentSerializer2

from rest_framework import serializers
class DepartmentSerializer2(serializers.ModelSerializer):
    class Meta:
        model=Department  # 指明参照的是哪个模型类
        fields = ‘__all__‘  # 包含模型类的所有字段
        fields = (‘name‘,‘id‘)  # 只序列化指定的字段
        exclude = (‘name‘,)  # 跟fields不能都写,写谁就排除谁
        read_only_fields = (‘price‘,)  # 仅用于序列化输出,在反序列化时不会进行校验和修改。
        extra_kwargs = 
            # name=serializers.CharField(max_length=12,min_length=4)
            ‘price‘:‘write_only‘:True
        

3 用法

‘‘‘
source 的三种用法:
    1. 可以改字段名字  xxx=serializers.CharField(source=‘name‘)
    2. 可以跨表  publish=serializers.CharField(source=‘publish.email‘)
    3. 可以执行方法 pub_date = serializers.CharField(source=‘test‘),test是Book表模型的方法
‘‘‘
SerializerMethodField()使用,主要用于显示返回多个值
    1. 需要配套放大,get_字段名,返回值就是要显示的东西
    authors = serializer.SerializerMethodField()
    
    def get_authors(self, instance):
        authors=instance.authors.all().values(‘name‘,‘age‘)
        return authors
        
modelsserializer里写局部钩子和全局钩子是和serializer一毛一样的。

09.drf-modelserializer(代码片段)

四、模型类序列化器ModelSerializer如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动... 查看详情

modelserializer组件(代码片段)

ModelSerializer组件一、DRF模型类序列化器如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类。ModelSerializer与常规的Serializer相同,但提供了:基于模型... 查看详情

drf框架之modelserializer序列化器(代码片段)

ModelSerializer是Serializer的子类,序列化和反序列化跟Serializer一样。ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动生成一系列字段基于模型类自动为Serializer生成validators,比如unique_together包含默认的create()和update()的... 查看详情

模型类序列化器(代码片段)

模型类序列化器DRF提供了模型类序列化器:ModelSerializer作用:简化对应django模型类的序列化器的定义ModelSerializer与常规的Serializer相同,但提供了:基于模型类自动生成一系列字段基于模型类自动为Serializer生成validators,比如字段... 查看详情

drf框架serializer之modelserializer(代码片段)

一、基本语法在没有使用ModelSerializer序列化器类之前,我们定义的序列化器类都需要添加对应模型类字段的很多字段,如果添加的字段特别多,那么势必会影响开发效率和代码的可读性,因此会选择一种更为简洁的序列化器类来... 查看详情

django-rest-framework-从零开始-3-序列化类modelserializer的使用(代码片段)

django-rest-framework-从零开始-3-序列化类ModelSerializer的使用1、前言我们之前提到创建序列化类,需要继承serializers.Serializer类,然后映射模型类的字段,然后重写create方法和update方法。这样的代码,看起来映射字段有一些重复代码,... 查看详情

模型序列化器销毁方法

】模型序列化器销毁方法【英文标题】:ModelSerializerdestroymethod【发布时间】:2018-12-2911:01:27【问题描述】:我有一个名为Profile的模型,它是Django的User模型的包装器。现在,我通过以下方式创建了一个ProfileSerializer:classUserSeriali... 查看详情

验证器(validators)(代码片段)

...关注点分离,使您的代码行为更加明显。使用快捷的 ModelSerializer 类和使用显式的 Serializer 类可以轻松切换。任何用于 ModelSerializer的验证行为都很容易复制。打印序列化器实例的 repr 将准确显示它应用... 查看详情

Django Rest Framework - 使用 ModelSerializer 和 ModelViewSet 更新相关模型

】DjangoRestFramework-使用ModelSerializer和ModelViewSet更新相关模型【英文标题】:DjangoRestFramework-UpdatingrelatedmodelusingModelSerializerandModelViewSet【发布时间】:2019-04-2616:18:56【问题描述】:背景我有两个序列化器:PostSerializer和PostImageSerializ... 查看详情

使用模型属性的 ModelSerializer

】使用模型属性的ModelSerializer【英文标题】:ModelSerializerusingmodelproperty【发布时间】:2013-06-0814:23:05【问题描述】:我正在尝试序列化包含我也想序列化的属性字段的模型。models.py:classMyModel(models.Model):name=models.CharField(max_length=... 查看详情

modelserializer类序列操作(代码片段)

目录ModelSerializer类序列化mysql配置:单表序列化与反序列化操作:ModelSerializer类序列化与反序列化:put更新:post新增:单删:ModelSerializer类序列化mysql配置:#settings.pyDATABASES='default':'ENGINE':'django.db.backends.mysql','NAM... 查看详情

20-djangorestframework-serializer序列化器(代码片段)

...增加额外字段关联对象序列化反序列使用模型类序列化器ModelSerializer指定字段前言本篇来学习Serializer序列化器知识序列化器作用进行数据的校验对数据对象进行转换定义Serializer定义方法模型#models.pyfromdjango.dbimpo 查看详情

序列化模块知识要点(代码片段)

...误流:序列化家族1、serializer类:底层序列化类--了解2、modelserializer类:模型序列化类--核心类3、ListSerializer类:群操作序列化类--辅助类models.py中注意事项:Serializer序列化(了解)drf序列化过程视图类序列化过程:视图类反序列化... 查看详情

序列化器(serializers)(代码片段)

...了强大的、通用的方法来控制响应的输出,以及一个 ModelSerializer 类,它为创建用于处理模型实例和查询集的序列化器提供了有用的快捷实现方式。声明序列化器(DeclaringSerializers)让我们从创建一个我们可以用于示例目的... 查看详情

在 Meta 中创建具有动态模型的通用序列化程序

...56【问题描述】:当我在django-rest0-framework中创建一个基于ModelSerializer的序列化器时,我将不得不在Meta类中传递模型:classClientSerializer(ModelSerializer):c 查看详情

Django Rest Framework,模型序列化器,处理只读数据

...序列化器,处理只读数据【英文标题】:DjangoRestFramework,modelserializer,workingwithreadonlydata【发布时间】:2017-10-2900:36:17【问题描述】:我有一个这样的端点:\'host.com/questions/123/vote\'。前端可以向该端点发送投票类型为“上”或“下... 查看详情

drf高级五modelserializer(代码片段)

...。fromrest_frameworkimportserializersclassProductSerializer(serializers.ModelSerializer):classMeta:model=Productfields=__all__#exclude=(created,)#read_only_fields=(email,)指定只读字段#extra_kwargs=created:write_only:TrueMeta属性指定字段—fields__all__指模型下所有字段元组或... 查看详情

drf高级二序列化器(代码片段)

...作方式与Django和类非常相似。FormModelFormSerializer响应输出ModelSerializer创建处理模型实例和查询集的序列化。fields序列化器和内部数据类型之间的转换(自定义序列化器和模型之间数据)。它们还处理验证输入值(数据验证)。#导... 查看详情