所以我现在使用我的EmployeeForm中的Django SelectDateWidget,但我只能在视图中加载一个form_class。理想情况下,我希望能够在我的视图中加载多个form_classes,或者以其他方式在我的formset上使用SelectDateWidget。
现在唯一有效的小部件是EmployeeForm中的小部件。我需要帮助来弄清楚如何利用三种表格中的小部件。
非常感谢任何和所有帮助!
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'
答案 0 :(得分:0)
Formsets没有Meta类,你不能像这样设置小部件(或任何属性)。相反,您需要为每个内联模型定义一个表单类,就像使用主要模型一样,然后在那里设置属性,然后将表单类传递给inlineformset_factory
以创建表单集类。