3 回答

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

TA貢獻1829條經驗 獲得超9個贊
創(chuàng)建一個單獨的序列化器并使用它
# 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)
添加回答
舉報