Django Rest Framework, возможно ли организовать загруженные файлы по ассоциированному пользователю? - PullRequest
0 голосов
/ 23 марта 2020

Я планирую бэкэнд, который принимает электронную почту, связанную с загрузкой файла. Можно ли было бы сделать так, чтобы бэкэнд создавал новую подпапку (с именем, являющимся загружаемым адресом электронной почты) в моей основной мультимедийной папке каждый раз, когда файл загружался с новым письмом, или помещал файлы в соответствующую подпапку?

Я пытался найти какие-либо примеры этого, но не нашел ни одного.

Спасибо!

1 Ответ

1 голос
/ 23 марта 2020

Вы действительно можете сделать это, установив атрибут upload_to вашего FileField в вызываемое, как описано здесь в документации.

Пример

import os
from django.conf import settings
from django.db import models

# Create user dir if non-existant and return upload path
def upload_path(instance, filename):
    path = os.path.join(settings.MEDIA_ROOT, str(instance.user))
    if not os.path.isdir:
        os.mkdir(path)

    return os.path.join(path, filename)


class MyMail(models.Model):

    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    body = models.TextField()
    attachment = models.FileField(upload_to=upload_path)

Вложение теперь загружено в папку с именем пользователя в папке мультимедиа.

...