Как создать несколько моделей из одной формы в Django - PullRequest
0 голосов
/ 26 октября 2019

У меня есть представление создания, используемое для создания теста с заголовком, автором и т. Д., Но мои тесты состоят из моделей ответов, которые связаны с моделями вопросов, которые затем связываются с этим тестом. Как сделать из этого форму для создания целого теста, включая вопросы и правильные ответы?

class QuizCreateView(LoginRequiredMixin, CreateView):
    model = Quiz
    fields = ['title', 'video_link', 'question_amount']

def form_valid(self, form):
    form.instance.author = self.request.user
    return super().form_valid(form)

Я использую хрустящие формы в шаблоне

{% extends "quiz_app/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Create Quiz</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-blue" type="submit">Submit</button>
            </div>
        </form>
    </div>
{% endblock content %}

TIA

1 Ответ

1 голос
/ 26 октября 2019

Вы можете использовать Inlines , что позволяет встраивать форму модели в форму родительской модели, например, внутри формы Викторины, вы можете иметь несколько форм Вопросов.

К сожалению, это работает только на 2 уровнях, вам нужен третий для ответов, у вас есть два варианта:

  • Вы можете создать две разные формы: форму викторины, которая включает в себя несколько форм вопросови форму Вопроса, которая включает в себя несколько форм Ответа;
  • Вы можете использовать django-nested-admin , который позволяет иметь несколько вложенных форм.

Вот краткое руководство о django-nested-admin , пример переосмысливает то, что вам нужно.

...