Здравствуйте! Помогите пожалуйста разобраться.
Есть модель данных Product. У каждого продукта есть категория. Также есть форма для создания новой записи, где пользователь указывает категорию и загружает файл.
Вопрос следующий: как в зависимости от выбранной категории (предположим есть всего две категории) указывать отпределенное место загрузки файлов за пределами MEDIA_ROOT указанного в настройках?
Структура:my_site <- основная директория, где хранится сам проект
my_site_files < - Файлы нужно хранить за пределами проекта
|____ category_1 <- файлы продукции с категорией 1 хранятся здесь
|____ category_2 <- файлы продукции с категорией 2 хранятся здесь
models.py:class Product(models.Model):
file = models.FileField(
max_length=255,
blank=True,
null=True,
validators=[validate_file_extension]
)
Что я сделал:
Cоздал для начало переменную окружения (PRODUCT_FILE_PATH) с абсолютным адресом до папки my_site_files. Подумал, что буду использовать эту переменную. Далее насколько я понял нужно использовать сигналы. Начал так, но если честно запутался:
@receiver(post_save, sender=Document)
def update_file_path(sender, instance, created, *args, **kwargs):
if created:
product_file=instance.file
old_name=product_file.name
if not old_name:
return
if instance.category==1:
# Здесь сохранить путь для первой категории
elif instance.category==2:
# Здесь сохранить путь для первой категории
instance.save()