【Django3.0功能开发】apps篇:serializes数据序列化简单的搭建

内容介绍

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是对对象的序列化和反序列化。

猜你喜欢

转载自blog.csdn.net/qq_20288327/article/details/112819550