5.5.drf的modelserializer
serializer
goods/serializer.py
class GoodsCategorySerializer(serializers.Serializer):
name = serializers.CharField(default='', max_length=30)
code = serializers.CharField(default='', max_length=30)
desc = serializers.CharField(default='', max_length=200)
category_type = serializers.IntegerField()
def create(self, validated_data):
return GoodsCategory.objects.create(**validated_data)goods/views.py
class GoodsCategoryView(APIView):
"""
获取商品类型列表
"""
def get(self, request, format=None):
category = GoodsCategory.objects.all()[:10]
serializer = GoodsCategorySerializer(category, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = GoodsCategorySerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)goods/urls.py
使用ModelSerializer简化Serializer
goods/serializer.py
若需要取出所有字段使用
fields = '__all__'
Serializer嵌套
结果
总所周知,drf中的serializer会为图片的url自动补全域名,但当Serializer嵌套Serializer时,图片的url自动补全域名将失效,若要开启需手动设置context={'request': self.context['request']}
使用场景
何时适用Serializer?何时使用ModelSerializer?
Model中要求某字段必须存在,可Serializer中却不需要时,使用Serializer
Last updated
Was this helpful?