我希望创建一个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
,使用户只能访问/更新由他创建的图书?
答案 0 :(得分:0)
在您的视图中使用get_queryset
方法并根据经过身份验证的用户过滤查询集:
class BookDetails(generics.RetrieveUpdateDestroyAPIView):
serializer_class = BookSerializer
def get_queryset(self):
user = self.request.user
return Book.objects.filter(project__user=user)