Загрузка изображений/файлов в определенную пользователем папку в Django

Я хочу загружать изображения в папку (где имя папки - это текущее имя пользователя, вошедшего в систему). Я использую django login forms.

например:

В настоящее время пользователь вошел в систему как 'user99'. теперь я предоставил функциональность, где он может загружать свои изображения. и когда он загружает изображение, оно должно сохраняться в моей локальной системе в папке его имени пользователя, т.е. user99.

загружено изображение - demo.jpg

целевой дикт - Media/user99/01-02-2022.jpg

В model.py вместо instance.title я хочу использовать instance.user. но когда я это делаю, я получаю эту ошибку.

mysite.models.Image.user.RelatedObjectDoesNotExist: У изображения нет пользователя.

Django версии 2.2.5, Python 3.7.11, Пожалуйста, помогите мне. Спасибо

мой model.py имеет вид:

def upload_path(instance,title):
    today = str(date.today())
    name = instance.user
    return f'{name}/{today}.jpg'

class Image(models.Model):
    title = models.CharField(max_length=20, choices=CROP_CHOICES)
    image = models.ImageField(upload_to=upload_path, blank=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)


    def __str__(self):
        return self.title

а views.py это:

def upload(request):
    if request.method == 'POST':
        form = ImageForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            img_obj = form.instance
            return render(request, 'mysite/upload.html', {'form': form, 'img_obj': img_obj})
    else:
        form = ImageForm()
    return render(request, 'mysite/upload.html', {'form': form})

forms.py :

class ImageForm(forms.ModelForm):
    class Meta:
        model = Image
        fields = ('title', 'image')
Вернуться на верх