Когда я получаю запрос POST
для класса отдыха Django APIView
, я хотел бы отфильтровать / проверить параметры, которые передаются, чтобы предотвратить их изменение.Например, для этого сериализатора:
class MediaSerializer(serializers.ModelSerializer):
class Meta:
model = Media
fields = ('id', 'title', 'content', 'url', 'createdByUser', 'karma', 'type', 'issue', 'creationDate', 'updatedDate')
Некоторые параметры, такие как id
, creationDate
или createdByUser
, изменять не следует.Так что для моего класса class MediaDetail(APIView)
у меня есть:
def validateRequest(self):
user = self.request.data.get('createdByUser', None)
karma = self.request.data.get('karma', None)
creationDate = self.request.data.get('creationDate', None)
if user is not None or karma is not None or creationDate is not None:
return Response(status=status.HTTP_400_BAD_REQUEST)
@method_decorator(login_required)
def post(self, request, pk, format=None):
self.validateRequest()
media = self.get_object(pk)
self._throwIfNotMediaAuthor(media, request.user)
serializer = MediaSerializer(media, data=request.data)
if serializer.is_valid():
# serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Есть ли лучший способ сделать эту проверку?Может на сериализаторе?Я не нашел достаточно документации