I've read a LOT of topics on validation yet I have no idea why this doesn't work. For example when width = 20 object still passes validation.
So I have this serializer:
class ImageUploadSerializer(serializers.ModelSerializer):
picture = Base64ImageField()
class Meta:
model = ImageUpload
fields = ['id', 'url', 'picture']
def validate_width(self, value):
if value < 100:
raise serializers.ValidationError('Width shouldn\'t be less then 100')
return value
def create(self, validated_data):
im = Image.open(validated_data['picture'])
width, height = im.size
validated_data['name'] = f'{datetime.datetime.now()}'
validated_data['width'] = width
validated_data['height'] = height
return super().create(validated_data)
And here's my view:
class ResizeImageView(APIView):
serializer_class = ImageResizeSerializer
def post(self, request, *args, **kwargs):
width = request.data['width']
height = request.data['height']
with open('c:/Users/KK/Desktop/tiny-kitten-in-sunlight.jpg', 'rb') as img:
mock_resized_obj = img.read()
mock_resized_obj_64 = pybase64.b64encode_as_string(mock_resized_obj)
serializer = ImageUploadSerializer(
data={'picture': mock_resized_obj_64,
'width': width,
'height': height}
)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
I know it is sloppy and all i just wanna know why validation doesn't work? I use one serializer to get parametres and another one to save and return data.
serializer I use to get parametres is:
class ImageResizeSerializer(serializers.Serializer):
width = serializers.IntegerField()
height = serializers.IntegerField()
Thank you beforehand!