My django form has a field MultipleChoiceField in with a list of tuples as the options. choice = forms.MultipleChoiceField( choices = [("1", "Option 1"), ("2", "Option 2"), ("3", "Option 3")], label="Choose an option", widget=forms.Select(), required=True, ) This creates the DOM element when it is loaded <select name="choice" id="id_choice"> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> </select> However, when it sends the POST request on the form being submitted, instead of giving a value ("1", "Option 1"), it just sends "1". As such, this triggers a ValidationError in the MultipleChoiceField when it is validated, as it has this function which requires the POST value to be a list or a tuple. def to_python(self, value): if not value: return [] elif not isinstance(value, (list, tuple)): raise ValidationError( self.error_messages["invalid_list"], code="invalid_list" ) return [str(val) for val in value] Is there any way of setting the POST value of the DOM element so that it sends this tuple? I tried to change it in the views.py function using field.data, but got This QueryDict instance is immutable Thanks in advance. Continue reading...