Доброго времени суток. Чет я уже под конец рабочего дня уже подтормаживаю)
Есть модели, вопрос и ответ. Есть форма, которая работает с одним вопросом. Т.е. выводит тест с одним вопросом, и валидирует ответ юзера. Позволяет сделать мини тест.
Внимание вопрос:
Как мне формировать правильно набор форм, что бы я мог создавать набор форм из нескольких вопросов, и валидировать несколько? А точнее, как правильно это сделать?
models.py

class Question(models.Model):
    question = models.TextField("Вопрос:")
    date_created = models.DateTimeField("Дата создания вопроса",
                                        auto_now_add=True)
    active = models.BooleanField("Активен ли вопрос", default=True)

class Answers(models.Model):
    question = models.ForeignKey(Question, verbose_name="Вопрос: ")
    answer = models.CharField("Ответ:", max_length=250)
    correctly = models.BooleanField("Правильный ответ", default=False)

forms.py

class QuestionLabelWidget(forms.Widget):
    """ Widget for Question, input question to label """
    def render(self, name, value, attrs=None):
        """ return HTML label text question """
        str_ = "<span>{}</span><input type='hidden' name='{}' value='{}' />".format(value, name, value)
        return str_


class TestThreeQuestionForm(forms.Form):
    """ Form for test app, view one question """
    question = forms.CharField(
        widget=QuestionLabelWidget()
    )

    answers = forms.ModelChoiceField(
        queryset=Answers.objects.none(),
        widget=forms.RadioSelect(),
        empty_label=None,
    )

    def __init__(self, *args, **kwargs):
        """ init queryset answers for Form """
        super(TestThreeQuestionForm, self).__init__(*args, **kwargs)
        if args and isinstance(args[0], dict) and args[0]:
            ans = args[0]['answers']
            if isinstance(ans, str):
                self.fields['answers'].queryset = Answers.objects.filter(
                    question=Answers.objects.get(pk=int(ans)).question
                )
                self.answer_ = self.fields['answers'].queryset.get(pk=ans)
            else:
                self.fields['answers'].queryset = ans

    def is_valid(self):
        result = super(TestThreeQuestionForm, self).is_valid()
        if not self.answer_.correctly:
            result = False
            self.add_error('answers', forms.ValidationError("Ответ неверный"))
        return result

Я понимаю что надо наследовать BaseFormSet в нем метод clean.
Меня интересует как сделать с помощью моей формы, набор форм что бы создавать тесты, создавая просто набор форм с нужным кол-вом вопросов.
Как?
Есть свои наработки, но все печально там. Вся сложность, в том, что при создании одного экземпляра моей формы, надо ей скармливать {"question": Queryset(Question), "answers": Queryset(answers for question)}