Как реализовать автоматическую генерацию пути сохранения файла в Django?

Имеется вот такая модель пользователя

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    first_name = models.CharField(max_length=100, verbose_name="Имя")
    last_name = models.CharField(max_length=100, verbose_name="Фамилия")
    study_group = models.CharField(max_length=100, verbose_name="Группа")

    def __str__(self):
        return self.user.username


Вот так реализована загрузка файлов

models.py:

class Article(models.Model):
    file_obj = models.FileField(upload_to='files', verbose_name='Файл')


views.py:
def Upload_file(request):
  if request.method == 'POST':
    form = ArticleForm(request.POST, request.FILES)
    if form.is_valid():
      form.save()
      return HttpResponseRedirect('/theory/all')
  else:
    form = ArticleForm()

  return render(request, 'file_upload.html', {'form': form})


Внимание, вопрос, уважаемые знатоки:
Как реализовать путь сохранения таким образом, чтобы загружаемый пользователем файл помещался в
{MEDIA_ROOT}/files/{username}/{YY.MM.DD}/

Аутентификация пользователей реализовано, соответственно username должен быть пользователя текущей сессии
  • Вопрос задан
  • 799 просмотров
Пригласить эксперта
Ответы на вопрос 2
un1t
@un1t
В аргумент upload_to можно передавать функцию. Если достаточно время, то можно так:
upload = models.FileField(upload_to='uploads/%Y/%m/%d/')
Ответ написан
winordie
@winordie
Лучшая документация -- исходники
Ваш ответ на вопрос

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

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