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, но я не могу понять, где.

Вернуться на верх