Несоответствие в именах параметров URL
Если я правильно понимаю ваш вопрос, вы передаете имя пользователя в качестве блока для просмотра, например:
path(
'm/user/<b><str:slug></b>/questions/',
views.UserAllQuestionView.as_view(),
name='user_profile_question_all'
),
Вы называете этот параметр slug
однако, по-вашему, вы звоните self.kwargs['username']
.Таким образом, вам нужно изменить один из двух.Например:
path(
'm/user/<b><str:username></b>/questions/',
views.UserAllQuestionView.as_view(),
name='user_profile_question_all'
),
Кроме того, это, вероятно, все еще не будет работать.Если я правильно понимаю, у вашего Question
класса есть ForeignKey
к User
модели.A User
отличается от его текстового представления (например, с помощью username
), поэтому фильтр будет выглядеть следующим образом:
class UserAllQuestionView(generic.ListView):
model = Question
template_name = 'mechinpy/user_profile_question.html'
context_object_name = 'user_all_questions'
def get_queryset(self):
return Question.objects.filter(<b>user__username</b>=self.kwargs['username'])
Использование user_id
вместо
При этом, возможно, было бы лучше использовать id
из User
вместо этого, что, вероятно, приведет к меньшей путанице (например, что если пользователю удастся использовать имя пользователя с косой чертой в нем, то URL-адресбольше не будет работать).Таким образом, более безопасный подход может быть:
path(
'm/user/<b><int:userid></b>/questions/',
views.UserAllQuestionView.as_view(),
name='user_profile_question_all'
),
class UserAllQuestionView(generic.ListView):
model = Question
template_name = 'mechinpy/user_profile_question.html'
context_object_name = 'user_all_questions'
def get_queryset(self):
return Question.objects.filter(<b>user_id=self.kwargs['userid']</b>)
и в шаблоне напишите его как:
<a href="<b>{% url 'mechinpy:user_profile_question_all' userid=user.id %}</b>">All User Questions</a>