@nurzhannogerbek

Как правильно в Django сохранить файл в определенное место?

Здравствуйте! Помогите пожалуйста разобраться.

Есть модель данных 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()
  • Вопрос задан
  • 1032 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы