序列化器的作⽤
进⾏数据的校验
对数据对象进⾏转换
一、定义⽅法
模型类:
from django.db import models
# Create your models here.
class NewsChannel(models.Model):
'''新闻频道'''
name=models.CharField(max_length=30,unique=True,verbose_name='频道名称')
url=models.CharField(default='',null=True,blank=True,max_length=50,verbose_name='频道页面链接')
class Meta:
db_table='app2_news_channel'
verbose_name='新闻频道'
verbose_name_plural=verbose_name
def __str__(self):
return self.name
序列化器类
class NewsChannelSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True, label='ID')
name = serializers.CharField(max_length=30, label='name')
url = serializers.CharField(max_length=50, label='url')
注意
serializer不是只能为数据库模型类定义,也可以为⾮数据库模型类的数据定义。serializer是独⽴于数据库之外的存在。
二、字段与选项
常⽤字段类型:
三、创建Serializer对象
定义好Serializer类后,就可以创建Serializer对象了。
Serializer的构造⽅法:Serializer(instance=None,data=empty,**kwarg)
说明:
1、⽤于序列化时,将模型类对象传⼊instance参数
2、用于反序列化时,将要被反序列化的数据预定数据参数
3、除了实例和数据参数外,在构造Serializer对象时,还要通过上下⽂参数额外添加数据,如
context参数数据可以通过Serializer对象的context属性获取。
serializer = NewsChannelSerializer(channel_obj, context={'request': request})