Get_object_or_404 и .get(id=pk) не работают, когда я пытаюсь получить доступ к моей модели в каком-либо представлении

я пытаюсь получить доступ к моей модели, используя оба метода, но один из них не работает в моем представлении. я хочу, чтобы когда пользователь нажимает на {{question.title}} на моей главной странице, он мог видеть все содержимое сообщения в шаблоне vewQuestion. но оба метода не работают в приложении. есть кто-нибудь, кто может помочь мне, пожалуйста.

мои урлы

path('view/<int:pk>/', views.viewQuestion, name='viewQuestion'),

метод обоих

my_list = get_object_or_404(Question, id=pk)
list_of_question = Question.objects.get(id=pk)

урл

<a href="{% url 'viewQuestion' question.id %}" style="text-decoration: none;">

шаблон дома

  <div class="container">
    <div class="row justify-content-center">
        {% for question in list_of_question reversed %}
        <div class="col-md-4">
            <div class="card my-3">
                <div class="card-header">
                    <p class="card-title">{{question.user}}</p>
                </div>
                <div class="card-body">
                    <a href="{% url 'viewQuestion' question.id %}" style="text-decoration: 
                     none;">
                        <p class="card-title">{{question.title}}</p>
                    </a>
                    <p>Category: {{question.category}}</p>
                </div>
            </div>
        </div>
        {%endfor%}
    </div>
</div>

шаблон viewQuestion

 <div class="container">
    <div class="row justify-content-center">
        <h1>{{question.title}}</h1>
        <hr>
    </div>
    <br>
    <h3 style="font-family: arial;">{{question.body}}</h3>
    <hr>
    <br>
    <h5>{{question.user}}</h5>
</div>

взгляды

@login_required(login_url='login')
def index(request):
    query = request.GET.get('q', None)
    list_of_question = Question.objects.all()
    if query is not None:
        list_of_question = Question.objects.filter(
            Q(title__icontains=query) |
            Q(category__icontains=query)
        )
     context = {'list_of_question':list_of_question}
    return render(request, 'index.html', context)

def viewQuestion(request, pk):
    my_list = get_object_or_404(Question, id=pk)
    list_of_question = Question.objects.get(id=pk)
    answers = Answer.objects.filter(post_id=list_of_question)
    context = {'list_of_question':list_of_question, 'answers':answers, 'my_list':my_list}
    return render(request, 'viewQuestion.html', context)

мои модели

class Question(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100, blank=False, null=False)
    body = models.TextField(blank=False, null=False) 
    category = models.CharField(max_length=50, blank=False, null=False)

    def __str__(self):
        return str(self.user)

class Answer(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    answer = models.TextField(blank=False, null=False)
    post = models.ForeignKey(Question, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.user)

В шаблоне viewQuestion вы используете question переменную

Например

{{question.title}},

но вы не передаете его в context в представлении viewQuestion. Есть только list_of_question, answers и my_list.

Замените клавишу list_of_question на question и она должна работать:

def viewQuestion(request, pk):
    my_list = get_object_or_404(Question, id=pk)
    question = Question.objects.get(id=pk)
    answers = Answer.objects.filter(post_id=list_of_question)
    
    context = {'question':question, 'answers':answers, 'my_list':my_list}

    return render(request, 'viewQuestion.html', context)
Вернуться на верх