﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
27578	ModelChoiceField.to_python() somehow receives value as type 'list'	Julian	nobody	"Whenever im running form.is_valid() i get the error: 

> Select a valid choice. That choice is not one of the available
> choices.

Here is what I do in my view:

{{{

    timeframes = HostTimeFrame.objects.all()
    if request.method == 'POST':
        form = SelectDatesForm(request.POST, timeframes=timeframes)
        if form.is_valid():
            pass
    else:
        form = SelectDatesForm(timeframes=timeframes)

}}}

My form does this:

   
{{{
  class SelectDatesForm(forms.Form):
        timeframes = forms.ModelChoiceField(queryset=HostTimeFrame.objects.none(), widget=forms.CheckboxSelectMultiple,
                                            empty_label=None)
        def __init__(self, *args, **kwargs):
            qs = kwargs.pop('timeframes')
            super(SelectDatesForm, self).__init__(*args, **kwargs)
            self.fields['timeframes'].queryset = qs.order_by('start')
}}}


Ive been trying for hours to find where this actual validation is done, and realized the exception is raised in ModelChoiceField.to_python()


{{{
        try:
            key = self.to_field_name or 'pk'
            value = self.queryset.get(**{key: value})
        except (ValueError, TypeError, self.queryset.model.DoesNotExist):
            raise ValidationError(self.error_messages['invalid_choice'], code='invalid_choice')
}}}

Where value is the primary key, ** but in List format**, this raises an exception."	Bug	new	Forms	1.9	Normal				Unreviewed	0	0	0	0	0	0
