用django实现员工信息添加页面html,要添加详细信息(工号、姓名)、紧急联系人(姓名、电话)、教育背景(起止时间、学历)、工作经历(起止时间、职务)、家庭情况(姓名、关系、电话),其中添加紧急联系人、工作经历时,可动态增加一条记录
时间: 2023-07-04 21:25:42 浏览: 100
python-django-员工信息管理系统.rar
5星 · 资源好评率100%
好的,这是一个非常具体的问题,我会尽力回答。
首先,你需要在 Django 中创建一个员工信息的模型,包括工号、姓名等基本信息以及紧急联系人、教育背景、工作经历和家庭情况等详细信息。可以使用 Django 自带的 ModelForm 来生成表单。
紧急联系人和工作经历这种可动态增加记录的情况,可以使用 JavaScript 来实现。可以在页面加载时,先渲染一条默认的记录,然后在用户点击“添加”按钮时,使用 JavaScript 动态生成一条新的记录。可以使用 jQuery 或其他 JavaScript 库来简化这个过程。
最后,需要在 Django 中编写视图函数来处理表单提交。在视图函数中,需要将表单数据保存到数据库中,并且处理动态增加记录的情况。
下面是一个简单的示例代码,用于展示如何实现动态增加记录的功能:
```html
<!-- 员工信息表单 -->
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<!-- 紧急联系人 -->
<div class="emergency-contacts">
<h3>紧急联系人</h3>
<div class="emergency-contact">
{{ form.emergency_contacts.management_form }}
{% for formset in form.emergency_contacts %}
{{ formset.as_p }}
{% endfor %}
<button type="button" class="add-emergency-contact">添加</button>
</div>
</div>
<!-- 工作经历 -->
<div class="work-experience">
<h3>工作经历</h3>
<div class="work-experience-item">
{{ form.work_experience.management_form }}
{% for formset in form.work_experience %}
{{ formset.as_p }}
{% endfor %}
<button type="button" class="add-work-experience">添加</button>
</div>
</div>
<button type="submit">保存</button>
</form>
<script>
$(function() {
// 添加紧急联系人
$('.add-emergency-contact').click(function() {
// 复制最后一个表单项
var $lastForm = $('.emergency-contact').last();
var $newForm = $lastForm.clone(true);
// 清空表单项的值
$newForm.find('input[type="text"]').val('');
$newForm.find('input[type="tel"]').val('');
// 将新表单项加到列表中
$lastForm.after($newForm);
// 更新表单项计数器
var $totalForms = $('#id_emergency_contacts-TOTAL_FORMS');
$totalForms.val(parseInt($totalForms.val()) + 1);
});
// 添加工作经历
$('.add-work-experience').click(function() {
// 复制最后一个表单项
var $lastItem = $('.work-experience-item').last();
var $newItem = $lastItem.clone(true);
// 清空表单项的值
$newItem.find('input[type="text"]').val('');
$newItem.find('input[type="date"]').val('');
// 将新表单项加到列表中
$lastItem.after($newItem);
// 更新表单项计数器
var $totalForms = $('#id_work_experience-TOTAL_FORMS');
$totalForms.val(parseInt($totalForms.val()) + 1);
});
});
</script>
```
在 Django 的视图函数中,可以使用 Django 自带的 Formset 来处理动态增加记录的情况。下面是一个简单的视图函数示例代码:
```python
from django.forms import modelformset_factory
from django.shortcuts import render
from .models import Employee, EmergencyContact, WorkExperience
def add_employee(request):
EmergencyContactFormset = modelformset_factory(EmergencyContact, extra=1)
WorkExperienceFormset = modelformset_factory(WorkExperience, extra=1)
if request.method == 'POST':
form = EmployeeForm(request.POST)
if form.is_valid():
employee = form.save()
emergency_contacts_formset = EmergencyContactFormset(request.POST, instance=employee)
work_experience_formset = WorkExperienceFormset(request.POST, instance=employee)
if emergency_contacts_formset.is_valid() and work_experience_formset.is_valid():
emergency_contacts_formset.save()
work_experience_formset.save()
return redirect('employees_list')
else:
form = EmployeeForm()
emergency_contacts_formset = EmergencyContactFormset()
work_experience_formset = WorkExperienceFormset()
context = {
'form': form,
'emergency_contacts_formset': emergency_contacts_formset,
'work_experience_formset': work_experience_formset,
}
return render(request, 'add_employee.html', context)
```
希望这个示例能够帮助你实现员工信息添加页面。如果还有其他问题,请随时提问。
阅读全文