Вложенные формы в Django
Занимаюсь созданием системы тестирования (тест с вопросами и вариантами ответов) на Django. Архитектура БД на данный момент выглядит следующим образом:
TestName(id: pk, test_name : str)
TestQuestion(id: pk, question_title : str, test : foreign_key_to(TestName))
QuestionVariant(id: pk, variant_title: str, is_correct : bool, question : foreign_key_to(TestQuestion))
Таким образом уровень вложенности моделей - 2.
Каким образом можно реализовать форму для создания объекта из одновременно трёх моделей? Внешний вид формы должен быть как на картинке ниже, тест может содержать сколько угодно вопросов и каждый вопрос может содержать сколько угодно вариантов ответа.
Использовал inlineformset_factory
, но это помогло мне лишь при уровне вложенности - 1 (без добавления вариантов).
То есть я могу добавлять тест и к нему вопросы, но для реализации ещё и вариантов к каждому вопросу - нужно какое-то дополнение. Наткнулся на статью, где предлагалось переопределить BaseInlineFormSet
и в функции add_fields
дополнительно задавать атрибут nested
, в который помещать вложенный FormSet
, но проблема в том, что FormSet
, в который помещается данный атрибут содержит не один вопрос, а все вопросы, и по итогу ассоциация вариантов идёт не с одним конкретным вопросом, а с целым формсетом, содержащим большое их количество.
Буду очень благодарен за наводки на правильное архитектурное решение.