Serializer和ModelSerializer
ModelSerializer
-
先使用
ModelSerializer
测试一下结果,例:# models.py ###### from django.db.models import Model, CharField, BooleanField, ForeignKey class TestModel(User): name = CharField(max_length=64, name='name') class TestModel(Model): status = BooleanField(default=False, name='status') user = ForeignKey(User, db_column="user_id", name='user', on_delete=CASCADE, related_name="user_test") ###### # seriailzer.py ###### from models import TestModel from rest_framework.serializers import ModelSerializer, IntegerField, Serializer from rest_framework.serializers import SerializerMethodField class TestSerializer(ModelSerializer): user = IntegerField(required=False) status = SerializerMethodField() class Meta: model = TestModel fields = ("id", "status", "uesr")
-
把外键user设置为了非必填,但是现在去调用post接口就会发现user依然是必填的,会提示
{ "detail": "This field is required.", "sub_detail": { "user": [ "This field is required." ] } }
Serializer
- 再使用
Serializer
测试一下结果。 - 代码就不在贴了,直接把serializer.py文件中的
class TestSerializer(ModelSerializer):
改为class TestSerializer(Serializer):
就可以了 - 这时就会发现再次调用接口就不会再出现问题了
区别
-
ModelSerializer
类和Serializer
类大致一样,不过添加了一些功能,可以更加便捷的去校验model
中的数据. -
ModelSerializer
会基于model
自动创建一些字段 -
ModelSerializer
会自动生成一些验证,比如unique_together
验证. -
ModelSerializer
包含简单的默认的create()
和update()
.

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
12个超好用的IntelliJ IDEA 插件!你用过几个?
一、前言 IntelliJ IDEA如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了。其实笔者也是一枚从Eclipse转IDEA的探索者,随着近期的不断开发实践和调试,逐步体会到这款智能IDE带来的巨大开发便利,在强大的插件功能支持下,诸如对Git和Maven的支持简直让人停不下来,各种代码提示,包括JS更是手到擒来,最终不得不被这款神奇的IDE所折服。为了让身边更多的小伙伴参与进来,决定写下这篇文章。 二、IDEA VS Eclipse 核心术语比较 由下图可见:两者最大的转变就在于工作空间概念的转变,并且在IDEA当中,Project和 Module是作为两个不同的概念,对项目结构是具有重大意义的,这也恰恰是许多IDEA初学者觉得困扰的地方。 1 为什么要取消工作空间?答:简单来说,IDEA不需要设置工作空间,因为每一个Project都具备一个工作空间!!对于每一个IDEA的项目工程(Project)而言,它的每一个子模块(Module)都可以使用独立的JDK和MAVEN配置。这对于传统项目迈向新项目的重构添加了极大的便利性,这...
-
下一篇
Django-SerializerMethodField
目标 有一个status状态,后端存的是0、1,前端需要展示为否、是。 后段返回给前端时,直接返回否、是,前端读取展示,不需要判断。 实现方法1,加字段 加一个只读字段status_zh,根据status判断赋值后返回给前端,前端使用status_zh 例: # models.py ###### from django.db.models import Model, BooleanField class TestModel(Model): status = BooleanField(default=False, name='status') @property def status_zh(self): status_ = "是" if self.status else "否" return status_ ###### # seriailzer.py ###### from models import TestModel from rest_framework import serializers from rest_framework.serializers import Seria...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL数据库在高并发下的优化方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19