title: ModelChoiceField in django admin gives 'Select a valid choice. That choice is not one of the available choices.' error
body: <p>Hej!</p>
  <p>I want a field in my django admin area where the user can select from given choices in the database.
  For example get a list of countries and choose one. But I will always get the ' Select a valid choice. That choice is not one of the available choices.' error  when you try to save the new instance.</p>
  <pre><code>#models.py
  
  class PlaceSection(models.Model):
      code = models.CharField(max_length=1)
  
          def code_str(self):
          return self.code
  
  </code></pre>
  <pre><code># admin.py
  
  class InstiForm(forms.ModelForm):
      place_sections = forms.ModelChoiceField(
          PlaceSection.objects.values(),
          widget=Select2Widget,
      )
      
  
      class Meta:
          model = Something
          fields = [
              &quot;place_section&quot;]
  
  
  class InstiAdmin(admin.ModelAdmin):
      form = InstiForm
      save_on_top = True
      def save_model(self, request, obj, form, change):
      fieldsets = [
          (
              (&quot;General&quot;),
                  {&quot;fields&quot;: [
                      &quot;place_sections&quot;
                      ]
                  }
              )
          ]
  
  </code></pre>
  <p>I do get the right choices in the admin dropdown but when I select one and save the error occurs.</p>
  <p>Does anyone has an idea how to fix this (in the admin) found only similar problems without the admin part and no solution worked for me.</p>
  <p>Help is really appreciated! :)</p>
  <p>Edit:</p>
  <p>I fixed the issue in my admin-area but now can't filter for PlaceSection in my forms/views.
  The needed fields are there, but after the 'search' the TypeError 'PlaceSection' object is not iterable occurs. It seems to be a NoneType and empty but I don't understand what I'm doing wrong.</p>
  <p>Any further help is appreciated as well! :)</p>
  <pre><code># forms.py
  
  class SearchForm(forms.Form):
      place_sections = forms.ModelMultipleChoiceField(
          queryset=PlaceSection.objects.all(), widget=Select2MultipleWidget, required=False)     
  
  </code></pre>
  <pre><code># views.py
  
  def search_institution(request):
      if request.method == &quot;POST&quot;:
          form = SearchForm(request.POST)
          if form.is_valid():
              query = filter_query(form)
              context = {&quot;result_data&quot;: serialize(query), &quot;form&quot;: form, &quot;show_form&quot;: False}
              return render(request, &quot;stakeholders/search_form.html&quot;, context)
      else:
          form = SearchForm()
  
      context = {
          &quot;result_data&quot;: serialize(Institution.objects.all()),
          &quot;form&quot;: form, 
          &quot;show_form&quot;: True
      }
      return render(request, &quot;stakeholders/search_form.html&quot;, context)
  
  </code></pre>
  <pre><code># query.py
  
  def filter_query(form):
      query = Institution.objects.all()
      if form.cleaned_data[&quot;place_sections&quot;]:
          place_sections_query = Institution.objects.none()
          for section in form.cleaned_data[&quot;place_sections&quot;]:
              place_sections_query = (
                      place_sections_query
                      | Institution.objects.filter(place_sections__in=section)
              )
          query = query.intersection(place_sections_query)
      return query
  
  </code></pre>