Django Class Based View - Generic detail View должен вызываться с объектом pk или slug в URLconf

Итак, у меня есть программа, которая принимает вошедшего в систему пользователя и обновляет изображение его профиля. Изначально у меня был вид, основанный на функциях, и шаблон, соответствующий url (url для доступа к профилю и, соответственно, его редактирования - localhost:8000/profile)

#views.py
@login_required
def profile(request):
  if request.method=="POST":
      u_form=UserUpdateForm(request.POST, instance=request.user)
      p_form=ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
      if u_form.is_valid() and p_form.is_valid():
          u_form.save()
          p_form.save()
          messages.success(request, "Your account has been updated!")
          return redirect('profile')
  else:
      u_form=UserUpdateForm(instance=request.user)
      p_form=ProfileUpdateForm(instance=request.user.profile)


  context={'u_form':u_form, 'p_form':p_form}
  return render(request, 'users/profile.html', context)

#following line in URLpatterns of urls.py 
path('profile/', user_views.ProfileUpdateView.as_view(), name='profile'),

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

#views.py
class ProfileUpdateView(UpdateView):
    model=Profile
    fields=['image']

Случай 1: У меня было вот это в urls.py URLpatterns

  path('profile/', user_views.ProfileUpdateView.as_view(), name='profile'),

Выдает ошибку -

(https://i.stack.imgur.com/6mXfI.png)](https://i.stack.imgur.com/6mXfI.png) Я не понимаю, почему выскакивает эта ошибка, ведь нет ID конкретной страницы, например profile/1, profile/2 - только profile/, потому что пользователь автоматически идентифицируется по тому, кто в данный момент вошел в систему, следовательно, нет необходимости передавать отдельный параметр в url

Случай 2: после того как я добавил параметр pk

path('profile/<int:pk>/', user_views.ProfileUpdateView.as_view(), name='profile'),

Выскакивает эта ошибка (https://i.stack.imgur.com/Op9eQ.png)](https://i.stack.imgur.com/Op9eQ.png)

Я застрял уже на целый день. Я просмотрел документацию Django, а также документацию MDN. Все еще не могу понять

Насколько я могу понять, Profile - это модель, связанная с user. Если Profile находится в OneToOneField с User, то в вашем представлении, основанном на классе, оверрайдите метод get_object как:

def get_object(queryset=None,**kwargs):
    return self.request.user.profile

Если ваш Profile связан с ForeignKey на User, то ваш метод get_object изменится на:

def get_object(queryset=None,**kwargs):
    return Profile.objects.get(user=self.request.user)

В вашем классе переопределите метод get_object как:

def get_object(self, **kwargs):
    return Profile.objects.get(id=kwargs["int"])
Вернуться на верх