3 回答

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以在序列化器上設(shè)置只讀字段:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'email', 'first_name', 'last_name']
read_only_fields = ['id', 'email']
確保在 put 函數(shù)中將序列化器設(shè)置為部分:
serializer = UserEditSerializer(user, data = request.data, partial=True)
您還可以完全省略序列化程序中的字段,這將使用戶根本無(wú)法使用這些字段。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
創(chuàng)建一個(gè)單獨(dú)的序列化器并使用它
# serializers.py
class UserPutSerializer(serializers.ModelSerializer): # new serializer class
class Meta:
model = User
fields = ['first_name', 'last_name'] # define required fields
#views.py
class SingleUser(APIView):
def put(self, request, user_id):
user = User.objects.get(pk=user_id)
serializer = UserPutSerializer(user, data=request.data) # use new serializer here
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊
您可以使用序列化程序的屬性read_only_fields 。
另一種方法是使用“每個(gè)操作的序列化器”
添加回答
舉報(bào)