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