上一篇写了 使用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区别的时候,就已经写了。
后面详细的 我在慢慢来写吧