python - 在 django 中将多个模型组合在一个创建视图中
问题描述
我有多个模型表单形成多个模型。我想要一个表单来提交所有值。这意味着我想要一个用于发布所有模型表单数据的 createview。我不知道该怎么做。表格.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 继承所有这些模型表单并创建一个用于发布数据的表单。视图.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')
解决方案
推荐阅读
- html - 如何在高度为 100Vh 的页面上添加 100vh 的标题图像?
- windows - PowerShell中的管道:不将参数绑定到参数
因为它是空的 - c++ - 给定一个非空整数数组 nums,每个元素出现两次,除了一个。使用散列找到那个单一的
- php - 未捕获的错误:调用未定义的方法 mysqli_stmt::fetchAll()
- css - NextJS 的自定义 CSS 支持
- reactjs - 反应路由器 CSSTransition
- python-3.x - Python while 循环仅检查第一个 if 语句 (discord.py)
- javascript - 基于另一列的值着色标记 - plotly.js
- java - 从 Netbeans 8.2 中删除缓存无助于添加外部 .jar 库
- postgresql - 这个数据库模式和前缀之类的查询是否有改进?