Проверка, если пользователь родительского объекта == request.user при создании/обновлении дочернего объекта

class Parent(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)

class Child(models.Model):
    parent = models.ForeignKey(Parent, on_delete=models.CASCADE, related_name='childs')

Я хочу проверить, является ли пользователь родительского объекта пользователем request.user. Хочу понять, как это правильно сделать в DRF.

Вы можете сделать проверку в своем пользовательском классе разрешения, а затем добавить его в список permission_classes в представлении

разрешения

class IsParentOwnerOrReadOnly(permissions.BasePermission):
    def has_permission(self, request, view):
        parent_id = int(request.data.get('parent_id'))
        parent_instance = Parent.objects.filter(id=parent_id).first()
        return (request.method in permissions.SAFE_METHODS or
                (parent_instance and request.user == parent_instance.user))

просмотров

class ChildViewSet(viewsets.ModelViewSet):
    ...
    permission_classes = [permissions.IsAuthenticated, IsParentOwnerOrReadOnly]
    ...
Вернуться на верх