zoukankan      html  css  js  c++  java
  • DRF序列化代码

    DRF序列化

      --- 要安装Djangorestframework

      --- 要使用的时候要在setting中注册app--rest_framework

      --- 使用之前要定义一个序列化器,指定要序列化的字段

      下面 是models中的表:

    from django.db import models
    
    # Create your models here.
    
    __all__ = ['Book','Publisher','Auth']
    
    
    class Book(models.Model):
        title = models.CharField(max_length=32)
        CHOICES = ((1,'python'),(2,'linux'),(3,'go'))
        category = models.IntegerField(choices=CHOICES,max_length=32)
        publisher = models.ForeignKey(to='Publisher')
        auth = models.ManyToManyField(to='Auth')
    
        # def __str__(self):
        #     return self.title
    
    class Publisher(models.Model):
        name = models.CharField(max_length=32)
        def __str__(self):
            return self.name
    
    class Auth(models.Model):
        name = models.CharField(max_length=32)
        def __str__(self):
            return self.name

      ---新建一个py文件当做序列化器

    from rest_framework import serializers
    
    
    
    class PublisherSerializers(serializers.Serializer):
        id = serializers.IntegerField()
        name = serializers.CharField(max_length=32)
    
    class AuthSerializers(serializers.Serializer):
        id = serializers.IntegerField()
        name = serializers.CharField(max_length=32)
    
    class BookSerializers(serializers.Serializer):
        id = serializers.IntegerField()
        title = serializers.CharField(max_length=32)
        category = serializers.CharField(source='get_category_display')
        publisher = PublisherSerializers()
        auth = AuthSerializers(many=True)
    View Code

      manytomany,多对多的外键关系,要指定many=True,这样序列化的时候就会循环序列化每一个对象

      category = serializers.CharField(source='get_category_display')

      当有choices字段的时候可以使用source关键字来指定后面 执行的操作,可以跟ORM 操作

      

    ---在view文件中使用:

    class Book(APIView):
        def get(self,request):
            book_query = models.Book.objects.all()
            print(book_query)
            book_ser = myserializers.BookSerializers(book_query,many=True)
            return Response(book_ser.data)
    View Code
  • 相关阅读:
    图解隐马尔科夫模型【会其意】
    基于mysql对mybatis中的foreach进行深入研究
    JS-安全检测JavaScript基本数据类型和内置对象的方法
    Java-生成指定长度验证码的一种简单思路
    jQuery-表单流程导航
    JS-获取URL请求参数
    AngularJS-Uncaught Error: [$injector:modulerr]
    AngularJS-系统代码的配置和翻译
    JS-改变页面的颜色之变化核心-获取六位的随机数
    JS-为金额添加千分位逗号分割符
  • 原文地址:https://www.cnblogs.com/bozhengheng/p/12083031.html
Copyright © 2011-2022 走看看