Отправка значения отключенного селекта в форме со скрытым входом

У меня есть 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-запросе.

Итак, что я сделал, это через скрытый вход отправил выбранное значение отключенного select.

К сожалению, значение всегда равно 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 %}

Вы можете попробовать установить поле как отключенное в методе init класса Form в forms.py.

     def __init__(self, *args, **kwargs):
        super(YourForm, self).__init__(*args, **kwargs)
        self.fields['Yourfield'].disabled = True
Вернуться на верх