Найти - Пользователи
Полная версия: Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ?
Начало » Django » Как для каждого файла в media создавать отдельную папку под названием id к которой прикрепили файл ?
1
mister.twister
Я хочу, что бы для каждой статьи в медиа при добавлении файла, автоматически создавалась папка для хранения файлов, прикрепленных к статье, и что бы папка называлась номером вернее 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') может так?
FishHook
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)

VadimK
Имхо тут будет проблема - что при первом сохранении ID записи не будет существовать, т.е. нельзя будет создать папку по ID.
Так что делать лучше всего по дате:
 upload_to='uploads/%Y/%m/%d/'
FishHook
VadimK
Имхо тут будет проблема - что при первом сохранении ID записи не будет существовать, т.е. нельзя будет создать папку по ID.
Вероятно, имеется в виду, что статья уже создана до того, как к ней начнут прикреплять файлы, посмотрите на модели, которые приложил ТС, там явно ссылка по pk
VadimK
А, точно. Думал, что в одной модели все будет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB