Форум сайта python.su
Я хочу, что бы для каждой статьи в медиа при добавлении файла, автоматически создавалась папка для хранения файлов, прикрепленных к статье, и что бы папка называлась номером вернее 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/')
Отредактировано mister.twister (Сен. 23, 2020 20:10:00)
Офлайн
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)
Офлайн
Имхо тут будет проблема - что при первом сохранении ID записи не будет существовать, т.е. нельзя будет создать папку по ID.
Так что делать лучше всего по дате:
upload_to='uploads/%Y/%m/%d/'
Офлайн
VadimKВероятно, имеется в виду, что статья уже создана до того, как к ней начнут прикреплять файлы, посмотрите на модели, которые приложил ТС, там явно ссылка по pk
Имхо тут будет проблема - что при первом сохранении ID записи не будет существовать, т.е. нельзя будет создать папку по ID.
Офлайн
А, точно. Думал, что в одной модели все будет.
Офлайн