html - 在具有隐藏输入的表单中发送禁用选择的值
问题描述
我有一个 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 %}
解决方案
您可以尝试在 forms.py 中该 Form 类的 init 方法中将字段设置为禁用。
def __init__(self, *args, **kwargs):
super(YourForm, self).__init__(*args, **kwargs)
self.fields['Yourfield'].disabled = True
推荐阅读
- android - 如何在 Play Console 中获取发布管理器的活动日志?
- mysql - 如何使用单个 .csv 文件更新数据库(Django)中的多个表?
- node.js - Node.JS - 返回承诺给出“未定义”
- postgresql - Elasticsearch 如何加入出版物和关键字
- r - 是否可以在 DT 数据表中设置默认选择的复选框?
- android - 连接到 WiFi 时如何检测网络类型 (2G/3G/LTE)
- spring-mvc - HTTP状态405 - 不支持请求方法'GET' MVCspring
- javascript - 删除字段按钮在具有自动完成功能的动态添加/删除字段中不起作用
- c++ - 编译的谷歌协议缓冲区不起作用(C++)
- python - 检查numpy数组是否连续?