Python 单视图中的多个窗体

Python 单视图中的多个窗体,python,django,django-forms,Python,Django,Django Forms,因此,我目前在EmployeeForm中使用Django SelectDateWidget,但我只能在视图中加载一个form_类。理想情况下,我希望能够在视图中加载多个表单类,或者以其他方式在表单集上使用SelectDateWidget 目前唯一有效的小部件是EmployeeForm中的小部件。我需要帮助弄清楚如何利用三个表单集中的小部件 非常感谢您的任何帮助 Forms.py Views.py 表单集没有元类,也不能像这样设置小部件(或任何属性)。相反,您需要像处理主模型一样为每个内联模型定义

因此,我目前在EmployeeForm中使用Django SelectDateWidget,但我只能在视图中加载一个form_类。理想情况下,我希望能够在视图中加载多个表单类,或者以其他方式在表单集上使用SelectDateWidget

目前唯一有效的小部件是EmployeeForm中的小部件。我需要帮助弄清楚如何利用三个表单集中的小部件

非常感谢您的任何帮助

Forms.py Views.py
表单集没有元类,也不能像这样设置小部件(或任何属性)。相反,您需要像处理主模型一样为每个内联模型定义一个表单类,并在其中设置属性,然后将表单类传递给
inlineformset\u工厂
,以创建表单集类

from datetime import date
from django import forms
from django.forms import ModelForm, DateInput, DateField, extras
from django.forms.extras.widgets import SelectDateWidget
from extra_views import InlineFormSet, CreateWithInlinesView, UpdateWithInlinesView
from extra_views.generic import GenericInlineFormSet
from django.forms.models import inlineformset_factory
from employee_summary.models import Employee, Work_Record, Training_Record, FAA_Certificate

class EmployeeForm(ModelForm):

    class Meta:
        model = Employee
        widgets = {
            'hire_date': SelectDateWidget(years=range(date.today().year, 1975, -1)),
            'recurrent_due': SelectDateWidget(years=range(date.today().year, 1975, -1)),
            'super_da_due': SelectDateWidget(years=range(date.today().year, 1975, -1)),
            'red_badge': SelectDateWidget(years=range(date.today().year, 1975, -1)),
        }


class WorkRecordFormSet(InlineFormSet):
    model = Work_Record
    prefix = "work_record"
    extra = 1

    class Meta:
        widgets = {
            'start_date': SelectDateWidget(years=range(date.today().year, 1975, -1)),
            'end_date': SelectDateWidget(years=range(date.today().year, 1975, -1)),
        }

class TrainingRecordFormSet(InlineFormSet):
    model = Training_Record
    prefix = "training_record"
    extra = 1

    class Meta:
        widgets = {
            'date_earned': SelectDateWidget(years=range(date.today().year, 1975, -1)),
        }

class FAACertificateFormSet(InlineFormSet):
    model = FAA_Certificate
    prefix = "faa_certificate"
    extra = 1

    class Meta:
        widgets = {
            'issue_date': SelectDateWidget(years=range(date.today().year, 1975, -1)),
        }
from django.http import HttpResponse, HttpResponseRedirect
from django.template import RequestContext, loader
from django.views.generic import DeleteView, ListView
from extra_views import InlineFormSet, CreateWithInlinesView, UpdateWithInlinesView, SearchableListMixin, SortableListMixin
from extra_views.generic import GenericInlineFormSet
from employee_summary.models import *
from employee_summary.forms import EmployeeForm, WorkRecordFormSet, TrainingRecordFormSet, FAACertificateFormSet
from django.shortcuts import render

class EmployeeCreate(CreateWithInlinesView):
    model = Employee
    form_class = EmployeeForm
    inlines = [WorkRecordFormSet, TrainingRecordFormSet, FAACertificateFormSet]
    template_name = "create.html"
    success_url = '/employees'