@orange_ov

Как выбрать рандомную запись из БД в Django и вывести результат на шаблон?

Есть models.py:
class Questions(models.Model):
	question = models.CharField('Вопрос',max_length=200)
	q_category = models.CharField('Тема',max_length=200)

	class Meta:
		verbose_name = "Вопрос"
		verbose_name_plural = "Вопросы"

	def __str__(self):
		return self.question

Есть views.py:
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
	return render(request, 'cards/index.html', {})


Есть index.html:
{% extends 'base.html' %}

{% block content %}
<div>
    <h1>Генератор рандомных вопросов</h1>
    <p>Тема вопроса:</p> # выбрать q_category из models.py
    <button>Получить вопрос</button>
</div>

{% endblock %}


Логика такая: зайдя на index.html, пользователь в селекторе "Тема вопроса" выбирает вопрос(q_category) и получает рандомный вопрос(question) из models.py.
Вопросы в БД уже существуют.

Не могу до конца додумать как это сделать, догадываюсь, что это возможно форма с методом 'POST'.
Также, метод objects.order_by('?') может сюда подойти? Вопросов порядка 300, метод не будет медленным?
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ответы на вопрос 1
@AlexSabanov
views.py:
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    random_field = Questions.objects.order_by("?").first()
    context = {
        'question': random_field.question,
        'q_category': random_field.q_category,
    }
    return render(request, 'cards/index.html', {context = context})
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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