• models.py

    # 商品分类
    class Category(models.Model):
    name = models.CharField(max_length=32) # 商品
    class Goods(models.Model):
    name = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=9,decimal_places=2)
    cate = models.ForeignKey(to='Category',on_delete=models.CASCADE)
  • urls.py

    from django.urls import path,include
    from . import views
    urlpatterns = [
    path('goods/',views.GoodsView.as_view()),
    ]
  • seralizers.py

    # 序列化
    class GoodsSerializer(serializers.ModelSerializer):
    # 如果想查出分类名称 CharField(source='<本model中的外键>.<外键指向的model的相应属性>')
    cate_name = serializers.CharField(source='cate.name')
    class Meta:
    model=Goods
    fields = ('cate_name','name','price') # 反序列化
    class GoodsUnSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=32)
    price = serializers.DecimalField(max_digits=9,decimal_places=2)
    cate = serializers.IntegerField() # 添加
    def create(self, data):
    return Goods.objects.create(
    cate_id = data.pop('cate'),
    **data
    )
    # 编辑
    def update(self,instance,data):
    return instance.update(
    cate_id = data.pop('cate'),
    **data
    )
  • views.py

    class GoodsView(APIView):
    # 查询
    def get(self,request):
    goods = models.Goods.objects.all()
    gs = GoodsSerializer(goods,many=True)
    return Response(gs.data) # 添加
    def post(self,request):
    dic = {"name":"金丝猴","price":132,'cate':3}
    gs = GoodsUnSerializer(data=dic)
    if gs.is_valid():
    gs.save()
    return HttpResponse('ok')
    return HttpResponse('error') # 更新
    def put(self,request):
    obj = models.Goods.objects.filter(id=1)
    dic = {"name":"金丝猴123","price":234,'cate':2}
    gs = GoodsUnSerializer(obj,data=dic)
    if gs.is_valid():
    gs.save()
    return HttpResponse('put-ok')
    return HttpResponse('put-error')

DRF一对多序列化和反序列化的更多相关文章

  1. day71:drf:API接口&Restful API规范&Django Rest Framework&drf中的序列化和反序列化功能

    目录 1.web应用模式 2.API接口 3.Restful API规范 4.序列化 5.Django Rest Framework 1.drf的简单介绍 2.drf的特点 3.如何安装drf 4.d ...

  2. DRF单表序列化和反序列化

    安装 djangorestframework pip install djangorestframework 将rest_framework注册到app上 INSTALLED_APPS = [ 're ...

  3. drf序列化与反序列化

    序列化器-Serializer 定义序列化器 Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serial ...

  4. DRF框架(二)——解析模块(parsers)、异常模块(exception_handler)、响应模块(Response)、三大序列化组件介绍、Serializer组件(序列化与反序列化使用)

    解析模块 为什么要配置解析模块 1)drf给我们提供了多种解析数据包方式的解析类 form-data/urlencoded/json 2)我们可以通过配置来控制前台提交的哪些格式的数据后台在解析,哪些 ...

  5. DRF框架(三)——media资源路径设置、多表设计复习及补充、序列化组件(ModelSerializer)操作多表(序列化与反序列化)、多表序列化与反序列化整合(重点)

    media资源路径设置  (设置好后把图片放在这个文件夹中,通过链接能访问到图片) 1.先在根目录设置一个media文件夹 2.配置settings.py,加上下面的 MEDIA_URL = '/me ...

  6. drf序列化及反序列化

    假如把drf看做一个汉堡包,我们之前讲的模块属于汉堡包前面的盖盖(请求模块.渲染模块)和底底(异常模块.解析模块.响应模块),但是真正中间的夹心没有讲,那么今天我就和大家来看一下汉堡包的夹心(序列化及 ...

  7. drf的序列化和反序列化

    序列化器--Serializer 选项参数: max_length 最大长度 min_length 最小长度 allow_blank 是否允许为空 trim_whitespace 是否截断空白字符 m ...

  8. drf序列化和反序列化

    目录 drf序列化和反序列化 一.自定义序列化 1.1 设置国际化 二.通过视图类的序列化和反序列化 三.ModelSerializer类实现序列化和反序列化 drf序列化和反序列化 一.自定义序列化 ...

  9. ModelSerializer,序列化与反序列化整合

    复习 """ 1.解析模块:全局局部配置 REST_FRAMEWORK = { # 全局解析类配置 'DEFAULT_PARSER_CLASSES': [ 'rest_f ...

随机推荐

  1. 每天一点点之css - 动画-一个圆绕着另一个圆动(绕着轨迹运动)

    最近要开发一个类似星河的效果,需要小圆绕着一定的轨迹运动,这个时候我首先想到的是使用canvas来实现,在实现过程中发现这个实现起来不是很灵活,然后想到css3有动画也可以实现,下面是效果 注:图2是 ...

  2. DuplicateHandle伪句柄与实句柄的应用二

    //扫描进程列表,获得进程名为 ConsoleApplication2.exe的进程句柄B,把当前进程A的伪 //句柄传递给B,在B进程中关闭它 #include "stdafx.h&quo ...

  3. python类、super函数

    #PYTHON语言及其应用学习笔记 1.创建简单的类 class Person(): #python中特殊的对象初始化方法__init__,一个特殊的函数名 #当你在类声明里定义__init__()方 ...

  4. vagrant 学习笔记

    之所以学习他是因为最近换了电脑 又要重新搭环境  很烦躁然后就有了然后 1.先安装 virtualbox2.安装 vagrant3.安装xshell4.重启5.下载系统镜像 (可以去vagrant官网 ...

  5. iOS下JS与原生的交互二

    本篇主要讲的是UIWebView和JS的交互,UIWebView和JS交互的详解https://www.cnblogs.com/llhlj/p/6429431.html 一. WKWebView调用J ...

  6. bugku-Web flag.php

    打开网页发现并没有什么,试了很多次没用. 其实题目中提示了hint,我们就传递一个hint=1试试,发现出现了代码: <?php error_reporting(0); include_once ...

  7. centos 7.4 磁盘空间不足,扩容根分区 --lvm模式

    背景:根分区磁盘空间不足,需要扩容root磁盘空间 1.查看现有磁盘信息,可以看出根分区有26G [root@localhost ~]# df -h 2.查看新增加的磁盘信息(改虚拟机已经添加好了,不 ...

  8. PAT Advanced 1030 Travel Plan (30) [Dijkstra算法 + DFS,最短路径,边权]

    题目 A traveler's map gives the distances between cities along the highways, together with the cost of ...

  9. Ubuntu16.04安装配置Caffe教程(GPU版)

    推荐博客:https://www.linuxidc.com/Linux/2017-11/148629.htmhttps://blog.csdn.net/yggaoeecs/article/detail ...

  10. nginx常用内置变量

    $args #请求中的参数值 $query_string #同 $args $arg_NAME #GET请求中NAME的值 $is_args #如果请求中有参数,值为"?",否则为 ...