Override get_queryset DetailView

Я новичок в Django и пытаюсь использовать Class Based Views для своего проекта, но у меня возникла проблема. Я хочу зарегистрировать пользователя на странице с его первичным ключом, но я не знаю, как переопределить query_set. Вот мой код, любая помощь будет благодарна.

в файле views.py :


class UserPage(LoginRequiredMixin, DetailView):
   template_name = 'user_page.html'
   model = User
   login_url = '/login/'

   def get_queryset(self):
       pass

в urls.py:

path('user/<int:pk>/' , UserPage.as_view()),

Я пишу это :

return User.objects.get(pk=pk)

но я получил эту ошибку :

Типовая ошибка отсутствует 1 обязательный позиционный аргумент: 'pk'

Начните с этого: представления, основанные на классах, должны быть классами, поэтому внесите изменения:

# before
def UserPage(LoginRequiredMixin, DetailView):

# after
class UserPage(LoginRequiredMixin, DetailView):

Зачем вам вообще переопределять get_queryset? Django найдет этот объект за вас. Вы не должны делать этого в DetailView (возможно, это даже невозможно, но я не уверен). Если вы хотите добавить что-то, то добавьте это в контексте:

class UserPage(...):
    ...
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['all_users'] = User.objects.all()
        return context
Вернуться на верх