【发布时间】:2021-10-15 11:11:23
【问题描述】:
我有一个 Django 表单,其中一个部分是这样填充的:
<select
{% if 'ba1' in widget.name or 'bs1' in widget.name or 'pm2' in widget.name %}
disabled
{% endif %}
id="{{ widget.attrs.id }}"
name="{{ widget.name }}"
{% if widget.attrs.disabled %}disabled{% endif %}
{% if widget.required %}required{% endif %}
class="form-control form-control-sm
{% if widget.errors %} is-invalid{% else %} is-valid{% endif %}"
aria-describedby="{{ widget.id }}-help">
{% for value, label in widget.attrs.choices %}
{% if value in widget.value %}
<option value="{{ value }}" selected>{{ label }}</option>
{% else %}
<option value="{{ value }}" data="{{widget.value}}">{{ label }}</option>
{% endif %}
{% endfor %}
</select>
由于它是 ba1、bs1 和 pm2 情况下的禁用字段,因此该信息不会在 POST 请求中发送。
所以我所做的是,通过一个隐藏的输入,发送禁用选择的选定值。
不幸的是,该值始终为 0 而不是正确的值。我做错了什么。有人可以帮助我吗?
比如选择的值是2,或者3或者4,没关系,隐藏的输入说选择的值是0,是不正确的。
隐藏的输入代码(不工作,总是值 = 0)
{% if 'ba1' in widget.name or 'bs1' in widget.name or 'pm2' in widget.name %}
<input
type="hidden"
name="{{ widget.name }}"
class="form-control form-control-sm
{% if widget.errors %} is-invalid{% else %} is-valid{% endif %}"
{% for value, label in widget.attrs.choices %}
{% if value in widget.value %}
value="{{ value }}"
{% else %}
value="{{ value }}" data="{{widget.value}}"
{% endif %}
{% endfor %}
>
{% endif %}
【问题讨论】:
-
请看如何写minimal reproducible example。您如何设置这些隐藏输入的值?服务器如何获取/读取这些值(
request.POST/由表单类自动完成等)?仅仅模板显然不足以重现您的问题... -
@AbdulAzizBarkat 因此工作流程如下:用户单击一个按钮,该按钮调用views.py 中的一个视图,该视图生成表单的值并在响应中呈现该值。在值被渲染后,比如说“a.html”,用户点击另一个按钮,该按钮也调用views.py中的一个视图,该视图需要按顺序获取在“a.html”处呈现的表单的先前值在呈现的响应“b.html”中显示相同的表单值。我想这就是你需要知道的全部。
标签: html django django-templates