当序列化类MATE中定义了depth时,这个序列化类中引用字段(外键)则自动变为只读,所以进行更新或者创建操作的时候不能使用此序列化类
具体方法是这样的分别定义两个序列化类,判断request的方法并选择,直接上代码:
serializers.py
# ==== 一旦有了depth,引用的字段就变为只读了 ====
class GetSetSerializer(serializers.ModelSerializer):
class Meta:
model = Set
fields = '__all__'
depth = 1
# ==== 这个序列化类没有depth ====
class UpdateSetSerializer(serializers.ModelSerializer):
class Meta:
model = Set
fields = '__all__'
views.py
class SetViewSet(viewsets.ModelViewSet):
"""
A viewset that provides default `create()`, `retrieve()`, `update()`,
`partial_update()`, `destroy()` and `list()` actions.