Как сохранить экземпляр формы, созданный с помощью класса sessionwizard в django?

Я хочу сохранить созданные объекты, но не могу заставить это работать. Я могу успешно заполнить форму и отправить ее, но никакие данные не сохраняются в базе данных. Есть какие-либо предположения о том, что я делаю неправильно? Я пытался использовать form_data[0].save, но он выбрасывает 'dict' object has no attribute 'save'

просмотров

from django.shortcuts import render
from formtools.wizard.views import SessionWizardView
from django.core.files.storage import FileSystemStorage
from .forms import (
    WithdrawForm1,
    WithdrawForm2,
)
from django.conf import settings
import os


class WithdrawWizard(SessionWizardView):
    template_name = 'withdraw.html'
    form_list = [WithdrawForm1, WithdrawForm2]
    file_storage = FileSystemStorage(location=os.path.join(settings.MEDIA_ROOT, 'media_root'))

    def done(self, form_list, **kwargs):
        form_data = [form.cleaned_data for form in form_list]
        
        return render(self.request, 'done.html', {'data': form_data})

Шаблон

{% load i18n %}

{% block head %}
{{ wizard.form.media }}
{% endblock %}

{% block content %}

<div class="row d-flex justify-content-center" style="height: 50vh;">
    <div class="col-md-6">
    <p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
        <form action="" method="post" enctype=multipart/form-data>{% csrf_token %}
        <table>
        {{ wizard.management_form }}
        {% if wizard.form.forms %}
            {{ wizard.form.management_form }}
            {% for form in wizard.form.forms %}
                {{ form }}
            {% endfor %}
        {% else %}
            {{ wizard.form }}
        {% endif %}
        </table>
        {% if wizard.steps.prev %}
        <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "first step" %}</button>
        <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "prev step" %}</button>
        {% endif %}
        <input type="submit" value="{% trans 'submit' %}"/>
        </form>
    </div>
</div>

{% endblock %}

form_data - это список словарей form.cleaned_data. Вам нужно сохранить экземпляры формы, а не очищенные словари данных.

Попробуйте это:

for form in form_list:
    form.save()
Вернуться на верх