django - 将选择输入的值设置为 Django 表单模板中最后一个请求的值
问题描述
这是我的模板代码
<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.field.value }}
. 但我不能对这些<select>
领域做同样的事情。
我尝试使用以下方法这样做
{% for id, name in form.fields.assigned_employee.choices %}
<option value="{{ id }}"{% if form.assigned_employee.value == id %} selected{% endif %}>{{ name }}</option>
{% endfor %}
. 但它不起作用,除非我为字段设置初始值,例如form = SomeForm(initial={'assigned_employee': 20180011})
有趣的是form.assigned_employee.value
提交后返回一个值。我已经使用console.log({{ form.assigned_employee.value }})
.
但对下列条件的评价{% if form.assigned_employee.value == id %} selected{% endif %}
总是false
。
有谁知道发生了什么?
解决方案
但是对以下条件 {% if form.assigned_employee.value == id %} selected{% endif %} 的评估总是错误的。
那是因为您忘记放置字段;{% if form.fields.assigned_employee.value == id %}
你不应该使用{% if form.assigned_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 %}
编辑
正如@Daniel Roseman的评论中提到的,如果你想在模板中将 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 %}
推荐阅读
- node.js - 从节点 JS 执行 POST 时无法验证第一个证书错误
- node.js - Nodejs Express 重复 GET 请求
- google-bigquery - 将列添加到 BigQuery 中的嵌套表
- c# - C# 使类对除自己的命名空间之外的所有命名空间不可见
- rx-java - 将最新值与最后 n 个值组合
- c# - 在 jQuery 中执行 c# 代码
- jenkins - 如何在 Jira Application for jenkins 扩展中查找 RPC url 的值
- c# - 根据源值数据映射到不同的值
- reporting-services - 与 SSRS 垂直对齐
- shell - 如何在 BPXBATCH 中编写长 z/OS UNIX shell 命令