使用restframework的时候,网页前端如果只是单纯get请求的话,会涉及到一些我们自定义方法的字段,如果在这个页面在提交就会报错,所以序列的时候可以区分开这些需求,设计两个序列化,get请求序列化和put,patch,delete,post序列化
serializers.py
class BookReadSerializer(serializers.ModelSerializer):
category = CategorySerializer()
author = AuthorSerializer()
class Meta:
model = Book
fields = '__all__'
class BookWriteSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = "__all__"
views.py
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
def get_serializer_class(self):
if self.request.method in ['GET', 'HEAD']:
return BookReadSerializer
else:
return BookWriteSerializer
直接区分开了,不同的请求方法调用不同序列