Python 在更新表单之前,如何显示表单中某行的db值?
我试图在通过URL传递的pk过滤DB后显示员工数据 我可以更新表单,但我不希望表单字段为空,因为我只想更新,这意味着我不会去碰所有的字段 forms.pyPython 在更新表单之前,如何显示表单中某行的db值?,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我试图在通过URL传递的pk过滤DB后显示员工数据 我可以更新表单,但我不希望表单字段为空,因为我只想更新,这意味着我不会去碰所有的字段 forms.py class AddEmployeeForm(forms.Form): genderset=[(0',--选择一个选项--',(“男性”,“男性”),(“女性”,“女性”)] 婚姻状况集=[(0',--选择一个选项--',(“已婚”,“已婚”),(“单身”,“单身”)] 就业类型设置=[(0',--选择一个选项--'、(“合同”、“合同”)、(
class AddEmployeeForm(forms.Form):
genderset=[(0',--选择一个选项--',(“男性”,“男性”),(“女性”,“女性”)]
婚姻状况集=[(0',--选择一个选项--',(“已婚”,“已婚”),(“单身”,“单身”)]
就业类型设置=[(0',--选择一个选项--'、(“合同”、“合同”)、(“全职”、“全职”)、(“实习生”、“实习生”)]
就业状况设置=[(0',--选择一个选项--'、(“活动”、“活动”)、(“非活动”、“非活动”)]
first\u name=forms.CharField(label=“first name”,最大长度=200)
last_name=forms.CharField(label=“last name”,最大长度=200)
employee_id=forms.IntegerField()
email=forms.EmailField(label=“email”,最大长度=200)
地址=forms.CharField(label=“address”,最大长度=200)
角色=forms.CharField(最大长度=200)
出生日期=forms.DateField()
join_date=forms.DateField()
end_date=forms.DateField()
位置=forms.CharField(最大长度=200)
hod=forms.ModelChoiceField(queryset=Department.objects.only('lead'))
电话号码=forms.CharField(最大长度=200)
就业类型=forms.ChoiceField(选项=就业类型集)
就业状态=forms.ChoiceField(选项=就业状态集)
婚姻状况=forms.ChoiceField(选项=婚姻状况集)
gender=forms.ChoiceField(choices=genderset)
department=forms.ModelChoiceField(queryset=department.objects.only('dept_name'))
凭据=forms.FileField()
passport=forms.FileField()
date\u added=forms.DateTimeField(initial=datetime.now,widget=forms.HiddenInput())
views.py
@login\u必需(login\u url='/accounts/login')
def编辑(请求,主键):
employee=employee.objects.filter(pk=pk)
表单=AddEmployeeForm()
上下文={
“雇员”:雇员,
“形式”:形式
}
返回呈现(请求'employees/edit.html',上下文)
edit.html
{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="page-wrapper">
<div class="content container-fluid">
<div class="row">
<div class="col-xs-4">
<h4 class="page-title">Edit Employee Details</h4>
</div>
<div class="col-xs-4 text-center">
{% include "partials/_alerts.html" %}
</div>
</div>
<form class="m-b-30" action="{% url 'add' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="row"></div>
{% for field in form %}
<div class="col-sm-6">
<div class="form-group">
{{ field.errors }}
{{ field|as_crispy_field }}
{% if field.help_text %}
<p class="help">{{ field.help_text|safe }}</p>
{% endif %}
</div>
</div>
{% endfor %}
</div>
<div class="m-t-20 text-center">
<button class="btn btn-primary">Save Changes</button>
</div>
</form>
</div>
</div>
{% endblock content %}
{%extends'base.html%}
{%load crispy_forms_tags%}
{%block content%}
编辑员工详细信息
{%include“partials/_alerts.html”%}
{%csrf_令牌%}
{%形式的字段为%}
{{field.errors}}
{{field | as_crispy_field}
{%if field.help_text%}
{{field.help_text|safe}
{%endif%}
{%endfor%}
保存更改
{%endblock内容%}
这意味着要显示从数据库中使用PK值筛选出的员工的值,PK值在
views.py
中,您可以将字典传递到AddEmployeeForm
构造函数中以显示值:
@login_required(login_url='/accounts/login')
def edit(request, pk):
employee = Employee.objects.filter(pk=pk)
field_values = { 'first_name': employee.first_name } #...other fields
form = AddEmployeeForm(field_values)
context = {
'employee': employee,
'form':form
}
return render(request, 'employees/edit.html', context)
表单实例要么绑定到一组数据,要么解除绑定
如果它绑定到一组数据,它就能够验证该数据并将表单呈现为HTML格式,其中的数据显示在
HTML
如果未绑定,则无法进行验证(因为没有数据可验证),但它仍然可以将空白形式呈现为HTML。
参考
视图.py中的,您可以将字典传递到AddEmployeeForm
构造函数中以显示值:
@login_required(login_url='/accounts/login')
def edit(request, pk):
employee = Employee.objects.filter(pk=pk)
field_values = { 'first_name': employee.first_name } #...other fields
form = AddEmployeeForm(field_values)
context = {
'employee': employee,
'form':form
}
return render(request, 'employees/edit.html', context)
表单实例要么绑定到一组数据,要么解除绑定
如果它绑定到一组数据,它就能够验证该数据并将表单呈现为HTML格式,其中的数据显示在
HTML
如果未绑定,则无法进行验证(因为没有数据可验证),但它仍然可以将空白形式呈现为HTML。
参考您可以创建表单实例并使用以下格式:
form = In_Form(initial={'username': name})
然后,在模板中,您可以使用以下内容填充表单:
{{employee.name}}
您可以创建表单实例并使用以下格式:
form = In_Form(initial={'username': name})
然后,在模板中,您可以使用以下内容填充表单:
{{employee.name}}