Python 在更新表单之前,如何显示表单中某行的db值?

Python 在更新表单之前,如何显示表单中某行的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',--选择一个选项--'、(“合同”、“合同”)、(

我试图在通过URL传递的pk过滤DB后显示员工数据

我可以更新表单,但我不希望表单字段为空,因为我只想更新,这意味着我不会去碰所有的字段

forms.py

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}}