self
- это объект DetailView
, который действительно не имеет первичного ключа. Если вы хотите получить доступ к объекту, вы обычно можете использовать self.object
, но поскольку вы перезаписали сам метод get
, он также не будет работать.
Вы можете исправить это, вызвав self.get_object()
здесьНапример:
from django.shortcuts import redirect
class CheckView(DetailView):
# …
def get(self, request, *args, **kwargs):
<b>self.object = self.get_object()</b>
if …:
return redirect('no_edit', pk=<b>self.object.pk</b>)
Здесь мы можем использовать redirect(..)
[Django-doc] . Это создаст HttpResponseRedirect
с результатом вызова reverse
.