В django пользователи должны иметь возможность видеть только те файлы, которые они загрузили. - PullRequest
0 голосов
/ 28 мая 2020

Я работаю над простым django веб-сайтом, который предоставляет своим пользователям возможность загружать файлы. Прямо сейчас все загруженные файлы могут видеть каждый аутентифицированный пользователь. Как сделать так, чтобы пользователи могли видеть только те файлы, которые они загрузили? Мои модели:

from django.db import models
from django.contrib.auth.models import User

class Document

title = models.CharField(max_length=100)
file = models.FileField(upload_to = 'media')

def __str__(self):
    return self.title

Я считаю, что мне нужно добавить модель ForeignKey в мой класс Document, чтобы отследить идентификатор пользователя ... К сожалению, я не нашел способа заставить его работать. Любая помощь приветствуется. Спасибо.

1 Ответ

1 голос
/ 28 мая 2020

В модельном документе добавьте для пользователя поле created_by с внешним ключом. Теперь в вашем представлении возвращаются только файлы, созданные текущим пользователем.

created_by = models.ForeignKey(User, on_delete=models.CASCADE)

Затем в вашем представлении

return Document.objects.filter(created_by=user)

он вернет только документы, созданные пользователем

...