DRF序列化代码

Posted bozhengheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于DRF序列化代码的主要内容,如果未能解决你的问题,请参考以下文章

DRF视图

drf框架 2 drf框架的请求生命周期(as_view和dispatch方法), 请求解析渲染响应异常, 序列化组件 ,ORM配置回顾(media文件配置),应用在settings.py中(代码片

DRF视图 𵀝

DRF框架serializer之视图优化

DRF框架serializer之ModelSerializer

DRF视图 -- 2019-08-08 18:01:40