Django Form Error "This field is required." только при попытке получить случайные объекты
Я получаю ошибку формы "Это поле обязательно для заполнения." только при попытке получить случайные объекты, например, такие:
pks = list(QuizQuestion.objects.values_list('pk', flat=True))
random_pks = random.sample(pks, 2)
questions = QuizQuestion.objects.filter(pk__in=random_pks)
Когда я использую: questions = QuizQuestion.objects.all()
все работает нормально.
Это форма викторины:
class QuizForm(forms.Form):
"""QuizForm used to display questions with their options."""
def __init__(self, *args, **kwargs):
questions = kwargs.pop('questions')
super(QuizForm, self).__init__(*args, **kwargs)
for question in questions:
choices = [
('option1', question.option1),
('option2', question.option2),
('option3', question.option3),
('option4', question.option4),
]
self.fields[str(question.id)] = forms.ChoiceField(
label=question.question_text,
choices=choices,
widget=forms.RadioSelect(attrs={'class': 'form-check-input'})
)
А это html-форма:
<form method="post">
{% csrf_token %}
{% for field in form %}
<div>
<label class="question">{{ field.label }}</label>
{% if field.errors %}
<ul class="errors">
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<div>
{% for choice in field %}
<label class="form-check-inline">
{{ choice }}
</label>
{% endfor %}
</div>
</div>
{% endfor %}
<button type="submit">Submit</button>
</form>
Я также пробовал другие методы получения случайных объектов отсюда: Django get a random object и https://books.agiliq.com/projects/django-orm-cookbook/en/latest/random.html. Я думаю, что проблема находится внутри QuizForm, но я не могу понять, где.