首页 > 解决方案 > 在多个屏幕上显示表单

问题描述

我有一个简单的表单,可以让我创建一个事件。

表格.py:

from django import forms
from bootstrap_datepicker_plus.widgets import DatePickerInput

from .models import Event


class EventForm(forms.ModelForm):    
    class Meta:
        model = Event
        fields = [
            'first_name',
            'last_name',
            "start_date",
            "end_date",     
        ]
        widgets = {
            "start_date": DatePickerInput(options={"format": "MM/DD/YYYY"}).start_of("event active days"),
            "end_date": DatePickerInput(options={"format": "MM/DD/YYYY"}).end_of("event active days"),       
        }

模型.py:

from django.db import models


class Event(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    start_date = models.DateField()
    end_date = models.DateField()

视图.py:

from django.http import HttpResponseRedirect
from django.views.generic.edit import FormView

from .forms import EventForm
from .models import Event


class BsFormView(FormView):
    template_name = "myapp/bs-form.html"
    form_class = EventForm

    def form_valid(self, form):
        if form.is_valid():
            first_name = form.cleaned_data["first_name"]
            last_name = form.cleaned_data["last_name"]
            start_date = form.cleaned_data["start_date"]
            end_date = form.cleaned_data["end_date"]
            event = Event(
                first_name=first_name, 
                last_name=last_name, 
                start_date=start_date, 
                end_date=end_date,
            )
            event.save()

        return HttpResponseRedirect(self.request.META.get("HTTP_REFERER"))

我想拆分它,以便用户可以输入名字和姓氏(步骤 1),单击Next,然后输入日期(步骤 2)。这是我描述的表格的一个例子。我需要使用哪些方法在 Django 中实现这样的表单?

标签: pythondjangoforms

解决方案


推荐阅读