Избранное разрешение Django
как настроить права доступа, чтобы получать избранное только того пользователя, который добавил, а избранное других пользователей не могло быть прочитано
models.py
class Task(models.Model):
user_info = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, name='userInfo')
title = models.CharField(max_length=100)
text = models.TextField(max_length=10000)
class Favourite(models.Model):
task_id = models.ForeignKey(Task, on_delete=models.CASCADE, blank=True, null=True, related_name='favourites',name='taskId')
user_info = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, name='userInfo')
views.py
class FavouriteUserView(generics.ListAPIView):
serializer_class = FavouriteReceivingSerializer
pagination_class = MyCursorPagination
permission_classes = (IsAuthor,)
def get_queryset(self):
return Favourite.objects.filter(
userInfo_id=self.kwargs.get('pk')).select_related('userInfo').order_by('userInfo_id')
permissions.py
class IsAuthor(BasePermission):
def has_permission(self, request, view):
if request.method in SAFE_METHODS:
return True
return request.user and request.user.is_authenticated
def has_object_permission(self, request, view, obj):
return obj.userInfo == request.user