Как отобразить загруженный файл пользователю, который загрузил его в Django? - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь создать систему, в которой пользователи могут загружать свои CSV-файлы в бэкэнд Django.Но я столкнулся с проблемой, я хочу, чтобы файл CSV отображался только пользователю, который его загрузил.Я делаю поле в моделях, которое может отследить пользователя, который загрузил файл.Вот некоторые из моих кодов.

Модель файла CSV:

class Data(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,default=1)
    filename = models.CharField(max_length=40,blank=False)
    csv_file = models.FileField(upload_to='documents/',blank=False)

    def __str__(self):
        return self.filename

И логика представления:

def accounts(request):
    user = Data.objects.values('user')
    if user == request.user:
        main_data = Data.objects.all()
    else:
        main_data = "" 
    dict = {'main_data':main_data, 'name' : request.user.username}
    return render(request, 'accounts.html',dict)

Я получаю только это значение 'main_data = ""'.

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

Просто мы можем сделать:

try:
    data = request.user.data
except Data.DoesNotExist:
    data = ''

Также, посмотрите пример отношений один-к-одному в Официальная документация Django .

1 голос
/ 20 сентября 2019

Вы пытаетесь сравнить request.user с набором запросов, а затем также возвращаете все Data объекты.Вам нужно использовать request.user, а затем возвращать только объекты, связанные с этим пользователем.

def accounts(request):
    main_data = Data.objects.filter(user=request.user)
    dict = {'main_data': main_data}
    return render(request, 'accounts.html', dict)

Также вам не понадобится 'name' : request.user.username в вашем dict.Вы можете получить доступ к username через main_data

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