@RuDiG

Как вывести варианты ответов с соответствующим вопросом через фильтр?

Пишу генератор тестов, дошел до момента генерации рандомных вопросов из БД и столкнулся с тем, что мне выдает все варианты ответов из других вопросов. Как это можно сделать через фильтр?

Вьюшка
def get_test(request):
    que = Questions.objects.order_by('?')[:5]
    answer = Answer.objects.filter()
    return render(request, 'flashcards/detail2.html', {'que': que, 'answer': answer})


Модельки
class Questions(models.Model):
    name = models.CharField(max_length=150, db_index=True)
    questions = models.TextField(max_length=1500, blank=True)
    available = models.BooleanField(default=True)


class Answer(models.Model):
    question = models.ForeignKey(Questions, on_delete=models.CASCADE)
    text = models.CharField(verbose_name='Ответ', max_length=250)
    right = models.BooleanField(verbose_name='Правильный', default=False)


HTML
<div class="container">
{% for que in que %}
      <div class="row row-cols-1 row-cols-sm-2 row-cols-md-1 g-3">
        <div class="col">
          <div class="card shadow-sm">


            <div class="card-body">
              <p class="card-text">{{ que.questions }}</p>
              {% for answer in answer %}
                <div class="custom-control custom-radio">
                <input type="radio" id="customRadio1" name="customRadio" class="custom-control-input">
                <label class="custom-control-label" for="customRadio1">{{ answer.text}}</label>
              </div>
            {% endfor %}
            </div>

          </div>
        </div>
          </div>

{% endfor %}
</div>


Что выдает на странице
63601d3aec3c9285746176.png
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Я полагаю, что-то типа
que = Questions.objects.order_by('?')[:5].select_related('answer')
ans = que.answer_set.all()

С джанго много не работал.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы