django-restful:serializers学习记录(二)

上一篇写了 使用django本身来进行序列化 传输
但是django本身处理起来 对image 和 date 字段无法正常的显示 或者更好的显示
所以我们要使用django rest framework 提供的serializer来处理
同样在app中创建一个serializers.py文件

其实这个serializers跟我们的forms一样有两个方法来继承
一个是serializers.Serializer
另一个是serializers.ModelSerializer
这两个的区别和作用跟forms十分像 所以只要知道django基础的都明白

from rest_framework import serializers

from goods.models import Goods,GoodsCategory


class CategorySeriallzer(serializers.ModelSerializer):
    class Meta:
        model = GoodsCategory
        # fields = ('name', 'click_num', 'market_price', 'add_time')
        fields = "__all__"


class GoodsSerializer(serializers.ModelSerializer):
    #显示category外键的所有信息  利用下面的实例化 就可以
    category = CategorySeriallzer()
    class Meta:
        model = Goods
        # fields = ('name', 'click_num', 'market_price', 'add_time')
        fields = "__all__"

然后讲讲不同 我们如何在返回的json中 显示外键的所有信息 而不是单单是外键的id
就跟上面写的一样 我们可以在建一个类 继承modelserializer
然后调用fields=‘all’ 来获取所有的字段
然后在我们的GoodsSerializer 进行实例化 添加字段 就可以了

然后就是在views中配置 进行显示

from .serializers import GoodsSerializer
from rest_framework import mixins

class GoodsListViewSet(mixins.ListModelMixin,viewsets.GenericViewSet):
    """
    商品列表页,分页,搜索,过滤,排序
    """
    queryset = Goods.objects.all()
    serializer_class = GoodsSerializer

就是这简单的几句 就可以了 关于继承的类 我前面写viewsets和generics区别的时候,就已经写了。
后面详细的 我在慢慢来写吧

你可能感兴趣的:(django-restful:serializers学习记录(二))