У меня несколько моделей форм образуют несколько моделей. Мне нужна одна форма для отправки всех значений. Это означает, что мне нужно одно единственное представление для публикации всех данных моделей. Я не знаю, как это сделать. forms.py:
class EmployeeAddModelForm(forms.ModelForm):
"""
Creates a form for employee invitations
"""
class Meta:
model = Employee
fields = [
'e_id',
'first_name',
'last_name',
'gender',
'religion',
]
class WorkExperienceForm(forms.ModelForm):
"""
Creates a form for saving employee work experiences
"""
class Meta:
model = WorkExperience
fields = [
'previous_company_name',
'job_designation',
'from_date',
'to_date',
'job_description',
]
class EducationForm(forms.ModelForm):
"""
Creates a form for saving educational info of an employee
"""
class Meta:
model = Education
fields = [
'institution_name',
'degree',
'passing_year',
'result',]
У меня есть три модельных формы из трех моделей в form.py. Я хочу, чтобы мой createview унаследовал все эти модели и создал единую форму для публикации данных. views.py:
class EmployeeAddView(LoginRequiredMixin,CreateView):
"""
Creates new employee
"""
login_url = '/authentication/login/'
template_name = 'employee/employee_add_form.html'
form_class = EmployeeAddModelForm
work_form_class = WorkExperienceForm
queryset = Employee.objects.all()
def form_valid(self, form):
print(form.cleaned_data)
return super().form_valid(form)
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
work_form = self.work_form_class(request.POST, prefix='work_form')
print(form.errors)
if form.is_valid() and work_form.is_valid():
form.save(commit=True)
work_form.save(commit=True)
return redirect('employee:employee-list')
return render(request, self.template_name, {'form': form, 'work_form': work_form})
def get_success_url(self):
return reverse('employee:employee-list')