Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ? [RSS Feed]

#1 Сен. 23, 2020 19:48:50

mister.twister
Зарегистрирован: 2020-09-09
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ?

Я хочу, что бы для каждой статьи в медиа при добавлении файла, автоматически создавалась папка для хранения файлов, прикрепленных к статье, и что бы папка называлась номером вернее id статьи к которой прикрепили файл. Как это реализовать?
это models.py

 class Articles(models.Model):
    create_date=models.DateTimeField(auto_now=True)
    name=models.CharField("Название статьи",max_length=200)
    text=models.TextField(verbose_name="Текст")
class Files(models.Model):
    aticle=models.ForeignKey(Article,on_delete=models.CASCADE,related_name='files_articles')
    file=models.FileField(upload_to='files/')
file=models.FileField(upload_to='files/&aticle') может так?

Отредактировано mister.twister (Сен. 23, 2020 20:10:00)

Офлайн

#2 Сен. 24, 2020 13:30:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ?

https://docs.djangoproject.com/en/3.0/ref/models/fields/#django.db.models.FileField.upload_to


согласно документации upload_to может быть не только строкой пути к файлу, но и функцией

 def user_directory_path(instance, filename):
    # file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
    return 'user_{0}/{1}'.format(instance.user.id, filename)
class MyModel(models.Model):
    upload = models.FileField(upload_to=user_directory_path)



Отредактировано FishHook (Сен. 24, 2020 13:31:35)

Офлайн

#3 Сен. 24, 2020 19:00:47

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ?

Имхо тут будет проблема - что при первом сохранении ID записи не будет существовать, т.е. нельзя будет создать папку по ID.
Так что делать лучше всего по дате:

 upload_to='uploads/%Y/%m/%d/'

Офлайн

#4 Сен. 24, 2020 19:37:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ?

VadimK
Имхо тут будет проблема - что при первом сохранении ID записи не будет существовать, т.е. нельзя будет создать папку по ID.
Вероятно, имеется в виду, что статья уже создана до того, как к ней начнут прикреплять файлы, посмотрите на модели, которые приложил ТС, там явно ссылка по pk



Офлайн

#5 Сен. 25, 2020 16:44:20

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ?

А, точно. Думал, что в одной модели все будет.

Офлайн

  • Начало
  • » Django
  • » Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version