У меня есть ModelForm
, который отлично работает для FireFox и Chrome, но по какой-то причине, когда кто-либо отправляет форму с IE, сервер просто получает форму с пустыми значениями. Я подтвердил это, напечатав отправленные значения в form.is_valid()
(как вы можете видеть ниже).
Вот мой код:
template.html:
<form id="tracking_form" action="/tracking/{{ view.person.id }}" method="POST">
{% csrf_token %}
{{ form.person }}
<input type="submit" class="btn btn-default" value="Add Data" style="width: 190px;">
</form>
forms.py:
class TrackingForm(forms.ModelForm):
def __init__(self, active_student=None, *args, **kwargs):
super(TrackingForm, self ).__init__(*args, **kwargs)
points_dict = {'class': 'weekday_points', 'min': 0, 'max': 100 }
arrived_dict = { 'class': 'not_required' }
for field in self.fields.values():
field.widget.attrs['form'] = 'tracking_form'
field.widget.attrs['class'] = 'form_field'
field.required = False
self.fields['monday_points'].widget.attrs.update(points_dict)
self.fields['tuesday_points'].widget.attrs.update(points_dict)
self.fields['wednesday_points'].widget.attrs.update(points_dict)
self.fields['thursday_points'].widget.attrs.update(points_dict)
self.fields['friday_points'].widget.attrs.update(points_dict)
self.fields['monday_arrived'].widget.attrs.update(arrived_dict)
self.fields['tuesday_arrived'].widget.attrs.update(arrived_dict)
self.fields['wednesday_arrived'].widget.attrs.update(arrived_dict)
self.fields['thursday_arrived'].widget.attrs.update(arrived_dict)
self.fields['friday_arrived'].widget.attrs.update(arrived_dict)
def is_valid(self):
# This is just here to print the values server receives
for name, field in self.fields.items():
if field.disabled:
value = self.get_initial_for_field(field, name)
else:
value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
print(name, ":", field.clean(value))
valid = super(TrackingForm, self).is_valid()
return valid
class Meta:
model = models.Tracking
exclude = ('person',)
Это журнал при отправке формы с FireFox:
2018-11-16 02:23:15 week : 3
2018-11-16 02:23:15 term : 4
2018-11-16 02:23:15 year : 2018
2018-11-16 02:23:15 b1 : fasd
2018-11-16 02:23:15 b2 : asdfsad
2018-11-16 02:23:15 monday_points : 0
2018-11-16 02:23:15 monday_attended : 1
2018-11-16 02:23:15 monday_arrived : 09:00:00
2018-11-16 02:23:15 tuesday_points : 0
2018-11-16 02:23:15 tuesday_attended : 1
2018-11-16 02:23:15 tuesday_arrived : 09:00:00
2018-11-16 02:23:15 wednesday_points : 0
2018-11-16 02:23:15 wednesday_attended : 1
2018-11-16 02:23:15 wednesday_arrived : 10:30:00
2018-11-16 02:23:15 thursday_points : 0
2018-11-16 02:23:15 thursday_attended : 1
2018-11-16 02:23:15 thursday_arrived : 09:00:00
2018-11-16 02:23:15 friday_points : 0
2018-11-16 02:23:15 friday_attended : 1
2018-11-16 02:23:15 friday_arrived : 09:00:00
И это журнал отправки той же формы в IE:
2018-11-16 02:23:41 week :
2018-11-16 02:23:41 term :
2018-11-16 02:23:41 year :
2018-11-16 02:23:41 b1 :
2018-11-16 02:23:41 b2 :
2018-11-16 02:23:41 monday_points : None
2018-11-16 02:23:41 monday_attended :
2018-11-16 02:23:41 monday_arrived :
2018-11-16 02:23:41 tuesday_points : None
2018-11-16 02:23:41 tuesday_attended :
2018-11-16 02:23:41 tuesday_arrived :
2018-11-16 02:23:41 wednesday_points : None
2018-11-16 02:23:41 wednesday_attended :
2018-11-16 02:23:41 wednesday_arrived :
2018-11-16 02:23:41 thursday_points : None
2018-11-16 02:23:41 thursday_attended :
2018-11-16 02:23:41 thursday_arrived :
2018-11-16 02:23:41 friday_points : None
2018-11-16 02:23:41 friday_attended :
2018-11-16 02:23:41 friday_arrived :