Парни, посмотрите пожалуйста реализацию, годно или нет.
class UpdateTask(DecoratorChainingMixin, UpdateView):
template_name = 'task_form.html'
model = Task
form_class = TaskForm
success_url = reverse_lazy('main')
decorators = [login_required, ]
def get_object(self, queryset=None):
task = super(UpdateTask, self).get_object()
if not task.can_edit(self.request.user):
raise PermissionDenied
return task
Вот эта хрень DecoratorChainingMixin принимает декоратор login_required, и в случае, если имеем дело с анонимным пользователем, то происходит редирект на login. В случае, если пользователь залогиненый, но не является создателем записи(проверка идет в task.can_edit), то выдаем 403.