django - сохранить загруженный файл в группу пользователей из профиля пользователя - PullRequest
0 голосов
/ 08 октября 2019

У меня есть форма userprofile, которая получает имя пользователя и группу, к которой он назначен, я хочу, чтобы файл, который загружает пользователь, был непосредственно сохранен в папке группы, к которой привязан пользователь.

Iдобиться этого, когда я буду следовать этому методу, но проблема в том, что имя пользователя является выпадающим, если пользователь выбирает другое имя по ошибке, файлы сохраняются в соответствующей группе пользователей, а не в группе пользователей

views.py

def uploaddata(request):
        if request.user.is_authenticated:

                if request.method == 'POST':

                        form = uploadmetaform(request.POST, request.FILES)
                        if form.is_valid():
                                form.save()

                                return redirect('file_list')
                else:
                        initial = {'user_profile':request.user.username}
                        form = uploadmetaform(initial=initial)

                return render(request, 'uploaddata.html', {
                        'form': form
                })
        else:
                return render(request, 'home.html')

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    Assigned_Group= models.CharField(max_length=500, choices=Group_choices, default='Please Select')

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

def nice_user_folder_upload(instance, filename):
    extension = filename.split(".")[-1]
    return (
        f"{instance.user_profile.Assigned_Group}/{filename}"
    )

class uploadmeta(models.Model):

    path = models.ForeignKey(Metadataform, on_delete=models.CASCADE)

    user_profile = models.ForeignKey(UserProfile, on_delete=models.CASCADE, null=True, verbose_name='Username') #, default=lambda: UserProfile.objects.get(id=1)


    tar_gif = models.FileField(upload_to=nice_user_folder_upload, verbose_name="Dataset")


    def __unicode__(self):
        return self.user_profile.user.username

Так как этого избежать, если мне не нужно использовать имя пользователя в форме

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...