Я должен проверить изображение. Я попытался добавить валидатор в поле в models.py
, но Python не может migrate
валидатор в зависимости от класса. Как добавить проверку в этом случае в views.py
validators.py
class ValidateImageSize:
MEASURE_UNIT_BYTE_MAP = {
'kb': 1024,
'mb': 1024 * 1024,
}
MEASURE_UNIT_NAME_MAP = {
'kb': 'kilobyte',
'mb': 'megabyte',
}
def __init__(self, max_size):
max_size, measure_unit = max_size.split(' ')
self.max_size = int(max_size)
self.measure_unit = measure_unit
def __call__(self, value):
if value.size > self.max_size * self.MEASURE_UNIT_BYTE_MAP[self.measure_unit]:
raise ValidationError(f'Size maximum is {self.max_size} {self.measure_unit}')
views.py
class EpisodeView(viewsets.ModelViewSet):
def create(self, request, story_id=None, *args, **kwargs):
try:
story = Story.objects.get(pk=story_id)
except Story.DoesNotExist:
raise NotFound
kwargs = {
'story': story,
'title': request.data.get('title'),
'cover': request.data.get('cover'),
}
episode = Episode.objects.create(**kwargs)
for image in dict(request.data.lists())['images']:
EpisodeImage.objects.create(episode=episode, image=image)
return Response({'episode_id': episode.id}, status=201)