Django файлы приложения хранения всегда загружаются в одну и ту же папку - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу, чтобы у каждого пользователя была своя папка с файлами. Независимо от того, под какой учетной записью я вошел, файлы всегда загружаются в папку первого зарегистрированного пользователя. Например, когда я вошел в систему как пользовательские файлы "tester" должны go to /media/files/tester.

models.py

from django.contrib.auth.models import User

def user_directory_path(instance, filename):
    return '{0}/{1}'.format(instance.user.username, filename)

class FileModel(models.Model):
    title = models.CharField(max_length=50, blank=True)
    file = models.FileField(upload_to=user_directory_path)
    uploaded_at = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)

    def __str__(self):
        return self.title

views.py

@login_required()
def main_page(request):
    files = FileModel.objects.filter(user=request.user)
    return render(request, 'dropbox/main_page.html', {'files': files} )

@login_required()
def upload_file(request):
    if request.method == 'POST':
        form = FileForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('main_page')
    else:
        form = FileForm()
        return render(request, 'dropbox/upload_file.html', {'form': form})

Что делать, чтобы файлы загружались в соответствующие папки в зависимости от того, кто вошел в систему?

...