1、自定义序列化器:
- (1)、定义一个BookInfo模型类的序列化器 —— 用来序列化/反序列化操作BookInfo模型类对象的
- (2)、通过定义和模型类“同名类属性、类型一一对应”的形式,来指定参与序列化的字段
- (3)、模型类隐藏字段也可以映射 —— 只要模型类有的字段都可以映射
新建一个serializers.py文件
from rest_framework import serializers
# serializers.Serializer: 该类,是所有自定义序列化器的基类
# 1、定义一个BookInfo模型类的序列化器 —— 用来序列化/反序列化操作BookInfo模型类对象的
class BookInfoSerializer(serializers.Serializer):
# 2、通过定义和模型类“同名类属性、类型一一对应”的形式,来指定参与序列化的字段
# 该指定,决定了序列化结果(字典)有哪些字段
# 3、模型类隐藏字段也可以映射 —— 只要模型类有的字段都可以映射
id = serializers.IntegerField()
btitle = serializers.CharField()
bpub_date = serializers.DateField()
bread = serializers.IntegerField()
bcomment = serializers.IntegerField()
is_delete = serializers.BooleanField()
image = serializers.ImageField()
2、标准序列化操作流程
- (1)、获取目标数据(一个or多个模型类对象)
- 单一对象:
book = BookInfo.objects.get(pk=1) - 多个对象:
books = BookInfo.objects.all()
- 单一对象:
- (2)、实例化序列化器对象
- 单一对象序列化的时候:
bs = BookInfoSerializer(instance=book) - 多个对象序列化的时候:
bs = BookInfoSerializer(instance=books, many=True)many=True表示序列化操作传入的instance是一个查询集(多个对象)
- 单一对象序列化的时候:
- (3)、序列化结果
- 单一对象序列化结果(dict):
bs.data - 多个对象序列化结果(OrderedDict):
bs.data(注:OrderedDict是特殊的字典,操作和普通字典一样)
序列化单一对象实例:
- 单一对象序列化结果(dict):
>>> from books_test.serializers import*
>>> from books_test.models import*
>>> book = BookInfo.objects.get(pk=1)
>>> bs = BookInfoSerializer(instance=book)
>>> bs.data
{'id': 1, 'bpub_date': '1980-05-01', 'image': None, 'btitle': '射雕英雄传', 'bcomment': 34, 'is_delete': False, 'bread': 100}
>>>
3、如何序列化其他的隐藏字段呢?
3.1、前置条件 ——models.py模型类定义:
# related_name定义一个主表隐藏字段为heros代表从表英雄多个对象
#定义图

最低0.47元/天 解锁文章
2566

被折叠的 条评论
为什么被折叠?



