Как настроить права доступа в django (не в DRF)?

Как настроить разрешения на обновление и удаление объектов только для создателя (автора) в view.py (CRUD классы)? Я знаю классы LoginRequiredMixin и PermissionRequiredMixin, но я не могу настроить их, чтобы сделать разрешение только для создателя (автора) на изменение конкретного объекта. Я знаю, как настроить разрешение в DRF, используя класс IsAdminOrReadOnly, например: permissions.py in DRF

class IsOwnerOrReadOnly(permissions.BasePermission):
    def has_object_permission(self, request, view, obj):
        if request.method in permissions.SAFE_METHODS:
            return True
        return bool(obj.user == request.user or request.user.is_staff)

view.py в Django (без DRF)

class NewsUpdateView(LoginRequiredMixin, BaseMixin, UpdateView):
    form_class = NewsForm
    model = News
    template_name = 'news/news_update.html'

model.py в Django (без DRF)

class News(models.Model):
    title = models.CharField(max_length=128)
    content = models.TextField(blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    photo = models.ImageField(upload_to='photos/%Y/%m/%d', blank=True)
    is_published = models.BooleanField(default=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

Вопрос в том, как настроить права доступа в django (не в DRF)? Заранее спасибо. Надеюсь, вы сможете дать мне совет, ссылку на статью, или документацию, или пример кода для решения этой проблемы. Я прочитал Custom users and permissions, но не понял, как решить именно мою задачу.

Вы можете использовать UserPassesTestMixin в своем представлении.

from django.contrib.auth.mixins import UserPassesTestMixin

class NewsUpdateView(LoginRequiredMixin, UserPassesTestMixin, BaseMixin, UpdateView):
    form_class = NewsForm
    model = News
    template_name = 'news/news_update.html'

    def test_func(self):
        news = self.get_object()
        return news.user == self.request.user
Вернуться на верх