Django Form Disabled Select Option Values Not Submitted Even When They are Enabled with JavaScript Before Submission
В моем HTML отображается около 20 или более форм через modelformset_factory
и каждая из них имеет предварительно выбранное имя сотрудника (поэтому оно отключено в forms.py
). Имя сотрудника является первичным ключом в модели Staff, поэтому я не хочу, чтобы все имена сотрудников были доступны для выбора. У вошедшего пользователя есть несколько назначенных сотрудников, поэтому от него требуется ввести только номер телефона и адрес. Отключенные поля включаются с помощью Javascript перед отправкой формы, но я все равно получаю ошибку {'staff_name': ['This field is required.']}
при отправке формы.
Вот мои коды:
forms.py
class StaffForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['staff_name'].disabled = True
views.py
class StaffModelFormSet(BaseModelFormSet):
def clean(self):
super().clean()
print(self.errors)
class StaffEntryView(LoginRequiredMixin, FormView):
def post(self, request, *args, **kwargs):
StaffFormSet = modelformset_factory(Staff, form=StaffForm, formset=StaffModelFormSet)
submitted_form = StaffFormSet(request.POST)
if submitted_form.is_valid():
self.form_valid(submitted_form)
print("This form is valid, Sir!")
else:
self.form_invalid(submitted_form)
print("This is not a valid form.")
template.html
<form method="post" class="form-control" id="staff_form" name="staff-form" onsubmit="enablePath();">
<!-- form details goes here -->
<tbody>
{% for form in formset %}
<tr class="table-striped">
<td>{{ form.staff_name }}</td>
<td>{{ form.phone }}</td>
<td>{{ form.address }}</td>
</tr>
{% endfor %}
</tbody>
script.js
function enablePath(e) {
var options = document.getElementsByTagName('select');
for (var i=0, iLen=options.length; i<iLen; i++) {
options[i].disabled = false;
}