Как обеспечить, чтобы пользователи могли только просматривать / обновлять данные, созданные ими? - PullRequest
0 голосов
/ 24 октября 2018

Я хочу создать API, который позволит пользователю получать доступ к / обновлять информацию о Книгах, только загруженных ими.У пользователя не должно быть разрешения на доступ / обновление книги, созданной кем-то другим.

Это мое models.py:

from django.contrib.auth.models import User

class Project(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    name = models.CharField(max_length=200)


class Book(models.Model):
    project = models.ForeignKey(Project,on_delete=models.CASCADE)
    name = models.CharField(max_length=200)
    total_pages = models.IntegerField()

Это мое serializers.py:

class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = "__all__"

Вот мой views.py:

class BookDetails(generics.RetrieveUpdateDestroyAPIView):
    serializer_class = BookSerializer
    queryset = Book.objects.all()

Как мне изменить views.py так, чтобы пользователь мог только просматривать / обновлять созданные им книги?

1 Ответ

0 голосов
/ 24 октября 2018

используйте get_queryset метод в вашем представлении и фильтруйте набор запросов на основе аутентифицированного пользователя:

class BookDetails(generics.RetrieveUpdateDestroyAPIView):
    serializer_class = BookSerializer

    def get_queryset(self):
        user = self.request.user
        return Book.objects.filter(project__user=user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...