diff --git a/back/object/models.py b/back/object/models.py index bea9097..9238da3 100644 --- a/back/object/models.py +++ b/back/object/models.py @@ -1,5 +1,6 @@ from django.db import models from django.core.validators import MinValueValidator, MaxValueValidator +from .validators import validate_image_size import logging logger = logging.getLogger("root") @@ -68,15 +69,7 @@ class ClickableArea(models.Model): Element3D, on_delete=models.PROTECT, ) - image = models.ImageField('Картинка', upload_to='images', blank=True, null=True) - - # def image_size_validator_factory(min_w=600, min_h=600, field_name='image'): - # def validator(image): - # if image.width < min_w or image.height < min_h: - # raise ValidationError( - # {field_name: f'Размер картинки от {min_w}х{min_h} пикселей. '} - # ) - + image = models.ImageField(upload_to='images/', validators=[validate_image_size], blank=True, null=True) def __str__(self): return self.name diff --git a/back/object/serializers.py b/back/object/serializers.py index 3c40d60..8890b7d 100644 --- a/back/object/serializers.py +++ b/back/object/serializers.py @@ -25,6 +25,6 @@ class Scene3DSerializer(serializers.ModelSerializer): class ClickableAreaSerializer(serializers.ModelSerializer): class Meta: model = ClickableArea - fields = "__all__" + fields = ['image'] diff --git a/back/object/validators.py b/back/object/validators.py new file mode 100644 index 0000000..b294a99 --- /dev/null +++ b/back/object/validators.py @@ -0,0 +1,6 @@ +from django.core.exceptions import ValidationError + +def validate_image_size(image): + max_size = 2 * 1024 * 1024 # Максимальный размер файла в байтах (2MB) + if image.file.size > max_size: + raise ValidationError(f"Размер файла не должен превышать {max_size / (1024 * 1024)}MB") \ No newline at end of file