Из-за проблем с миграцией изменен подход генерации имени загружаемых файлов

Этот коммит содержится в:
Глеб Иваницкий 2024-09-22 18:33:28 +03:00
родитель 3bc7837a5c
Коммит 5be1fe2b55

Просмотреть файл

@ -1,20 +1,25 @@
import os import os
import uuid
from django.db.models import Model from django.db.models import Model
from django.db.models import OneToOneField, ManyToManyField, CASCADE from django.db.models import OneToOneField, ManyToManyField, CASCADE
from django.db.models import CharField, TextField, IntegerField, DecimalField, BooleanField, ImageField from django.db.models import CharField, TextField, IntegerField, DecimalField, BooleanField, ImageField
from django.utils.deconstruct import deconstructible
def upload_to(path, /): @deconstructible
def wrapper(instance, filename): class UploadTo:
def __init__(self, path):
self.path = path
def __call__(self, instance, filename):
return os.path.join( return os.path.join(
path, self.path,
'%s.%s' % ( '%s.%s' % (
instance.pk, uuid.uuid4(),
filename.split('.')[-1], filename.split('.')[-1],
), ),
) )
return wrapper
class RoomImage(Model): class RoomImage(Model):
@ -29,7 +34,7 @@ class RoomImage(Model):
) )
image = ImageField( image = ImageField(
verbose_name='Изображение', verbose_name='Изображение',
upload_to=upload_to('media/rooms/images'), upload_to=UploadTo('media/rooms/images'),
) )
def __str__(self): def __str__(self):
@ -48,7 +53,7 @@ class RoomPanorama(Model):
) )
image = ImageField( image = ImageField(
verbose_name='Изображение', verbose_name='Изображение',
upload_to=upload_to('media/rooms/panoramas'), upload_to=UploadTo('media/rooms/panoramas'),
) )
def __str__(self): def __str__(self):
@ -105,3 +110,6 @@ class Room(Model):
verbose_name='Доступна для аренды', verbose_name='Доступна для аренды',
default=True, default=True,
) )
def __str__(self):
return self.name