将select输入的值设置为Django表单模板中最后一个请求的值
这是我的模板代码将select输入的值设置为Django表单模板中最后一个请求的值,django,django-forms,django-templates,Django,Django Forms,Django Templates,这是我的模板代码 <div class="form-group row"> <label for="{{ form.diagnosis.id_for_label }}" class="col-sm-4 col-form-label col-form-label-sm">{{ form.diagnosis.label }}</label> <div class="col-sm-8"> <input type="t
<div class="form-group row">
<label for="{{ form.diagnosis.id_for_label }}" class="col-sm-4 col-form-label col-form-label-sm">{{ form.diagnosis.label }}</label>
<div class="col-sm-8">
<input type="text" class="form-control form-control-sm{% if form.diagnosis.errors %} is-invalid{% endif %}" id="{{ form.diagnosis.id_for_label }}" name="{{ form.diagnosis.html_name }}" value="{{ form.diagnosis.value }}" required>
{% if form.diagnosis.errors %}
<div class="invalid-feedback">
{% for error in form.diagnosis.errors %}
{{ error }}
{% endfor %}
</div>
{% elif form.diagnosis.help_text %}
<small class="form-text text-muted">
{{ form.diagnosis.help_text }}
</small>
{% endif %}
</div>
</div>
<div class="form-group row">
<label for="{{ form.assigned_employee.id_for_label }}" class="col-sm-4 col-form-label col-form-label-sm">{{ form.assigned_employee.label }}</label>
<div class="col-sm-8">
<select class="custom-select custom-select-sm{% if form.assigned_employee.errors %} is-invalid{% endif %}" id="{{ form.assigned_employee.id_for_label }}" name="{{ form.assigned_employee.html_name }}">
{% for id, name in form.fields.assigned_employee.choices %}
<option value="{{ id }}"{% if form.assigned_employee.value == id %} selected{% endif %}>{{ name }}</option>
{% endfor %}
</select>
{% if form.assigned_employee.errors %}
<div class="invalid-feedback">
{% for error in form.assigned_employee.errors %}
{{ error }}
{% endfor %}
</div>
{% elif form.assigned_employee.help_text %}
<small class="form-text text-muted">
{{ form.assigned_employee.help_text }}
</small>
{% endif %}
</div>
</div>
。但它不起作用,除非我为字段设置一个初始值,比如form=SomeForm(initial={'assigned_employee':20180011})
有趣的是form.assigned\u employee.value
在提交后返回一个值。我已经使用console.log({{form.assigned\u employee.value}}})
检查了它
但是对以下条件的计算{%if form.assigned_employee.value==id%}所选{%endif%}
始终为false
有人知道发生了什么事吗
但是对以下条件{%if form.assigned_employee.value==id%}selected{%endif%}的计算始终为false
那是因为你忘了放置字段;您应该使用{%if-form.fields.assigned\u employee.value==id%}
而不是{%if-form.assigned\u employee.value==id%}
:
{% for id, name in form.fields.assigned_employee.choices %}
<option value="{{ id }}"{% if form.fields.assigned_employee.value == id %} selected{% endif %}>{{ name }}</option>
{% endfor %}
{%表示id,名称为form.fields.assigned_employee.choices%}
{{name}}
{%endfor%}
编辑
如注释中所述,如果要在模板中将int转换为string,可以使用:
{% for id, name in form.fields.assigned_employee.choices %}
<option value="{{ id }}"{% if form.assigned_employee.value == id|stringformat:"i" %} selected{% endif %}>{{ name }}</option>
{% endfor %}
{%表示id,名称为form.fields.assigned_employee.choices%}
{{name}}
{%endfor%}
我已经试过了。不起作用。此外,我还提到,form.assigned\u employee.value
确实返回一个值。该值可能是一个字符串(因为它需要显示为文本),而id是一个int。想想看。但是如何在模板中进行这样的比较呢@DanielRoseman@ShateelAhmed检查编辑以查看是否适合您。
{% for id, name in form.fields.assigned_employee.choices %}
<option value="{{ id }}"{% if form.assigned_employee.value == id|stringformat:"i" %} selected{% endif %}>{{ name }}</option>
{% endfor %}