Загрузка изображений/файлов в определенную пользователем папку в 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')