内容介绍
API流式数据的处理搭建serializes序列化处理。
业务实现
models.py
# 内容大类类别模型
class ArticleCategory(models.Model):
category_name = models.CharField(max_length=20, verbose_name='文章类别名称', help_text="文章类别名称")
class Meta:
verbose_name = '文章类别管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.category_name
# 内容二级分类类别模型
class ArticleItem(models.Model):
item_category = models.ForeignKey(
ArticleCategory, on_delete=models.CASCADE, related_name='ArticleItemCategory',
verbose_name="文章类别", help_text="文章类别"
)
item_name = models.CharField(max_length=20, verbose_name="栏目名称", help_text="栏目名称")
class Meta:
verbose_name = '文章栏目管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.item_name
views.py
# 内容大类类别视图
class ArticleCategoryViewSet(viewsets.ReadOnlyModelViewSet):
......
serializer_class = ArticleCategorySerializer # API中显示的字段内容设置
lookup_field = "category_name" # serializer的lookup字段,快速检索方式:http://xxxx/{
{lookup_field}}
......
# 内容二级分类类别视图
class ArticleItemViewSet(viewsets.ReadOnlyModelViewSet):
......
serializer_class = ArticleItemSerializer # API中显示的字段内容设置
lookup_field = "item_name" # serializer的lookup字段,快速检索方式:http://xxxx/{
{lookup_field}}
......
serializes.py
在models同级目录中创建serilaizes.py
from rest_framework import serializers
from .models import *
# 内容大类类别序列化
class ArticleCategorySerializer(serializers.ModelSerializer):
class Meta:
model = ArticleCategory # 序列化对应的模型
fields = ["category_name"] # 序列化仅显示字段
# 内容二级分类类别序列化
class ArticleItemSerializer(serializers.ModelSerializer):
# 序列化外键对象
category_name = serializers.CharField(source='item_category.category_name') # 解析获取大类类别内容信息
class Meta:
model = ArticleItem # 序列化对应的模型
fields = ["category_name", "item_name"] # 序列化仅显示字段
总结
序列化的字段构造同models中的字段构造,但内在逻辑model是与数据库表的关系映射,serializer是对对象的序列化和反序列化。