【问题标题】:How to create multiple models from the same form in Django如何在 Django 中从同一个表单创建多个模型
【发布时间】:2020-02-22 15:58:26
【问题描述】:

我有一个创建视图,用于制作包含标题、作者等的测验,但我的测验由链接到问题模型的答案模型组成,然后这些模型链接到此测验。如何制作用于创建整个测验的表格,包括问题和正确答案?

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

【问题讨论】:

    标签: django forms django-models django-class-based-views django-crispy-forms


    【解决方案1】:

    您可以使用Inlines,它允许您将模型的表单嵌入到父模型的表单中,例如,在您的测验表单中,您可以有多个问题表单。

    不幸的是,这仅适用于 2 个级别,您需要第三个级别的答案,您有两种选择:

    • 您可以创建两种不同的表单:包含多个问题表单的测验表单和包含多个答案表单的问题表单;
    • 您可以使用django-nested-admin,它允许您拥有多个嵌套表单。

    这是一个简短的tutorial about django-nested-admin,例子反映了你所需要的。

    【讨论】:

    • 啊应该提到,我正在寻找一种方法,以便用户可以创建测验而不是通过管理员
    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多