title: Form field value not updating after changing value in UpdateView in Django
body: <p>I have an app that has employee profiles and I can add safety courses for each profile. In the app I have a form that uses ModelChoiceField to get select values from the database. In the CreateView it works just fine. I can enter the dates and select the course for the profile and add it to the database. But the problem I'm having is when I update the safety course for the profile. When I update the form it updates the "conducted_date" and the "expiration_date", but the select form doesn't update. When I enter the update form the form doesn't even select the value that it currently has, for example: </p>
  
  <p>If I have a profile for "John Doe" and I added "course1" to his profile, that works fine, but when I go to edit the profile, "course1" isn't selected but rather "course2" is selected. Then when I chose another course like "course3" and press submit, the "conducted_date" and "expiration_date" gets updated but not the course. So what exactly am I doing wrong or what am I missing?</p>
  
  <p>forms.py</p>
  
  <pre><code>class SafetyCourseTakenForm(forms.ModelForm):
      course = forms.ModelChoiceField(queryset=SafetyCourse.objects.all(), empty_label=None)
  
      class Meta:
          model = SafetyCoursesTaken
          fields = [
              'conducted_date',
              'expiration_date',
          ]
  </code></pre>
  
  <p>views.py</p>
  
  <pre><code>class AddSafetyCourseTakenView(LoginRequiredMixin, SuccessMessageMixin, CreateView):
      login_url = reverse_lazy('users:login')
      form_class = SafetyCourseTakenForm
      template_name = 'ppm/forms/add-course-taken.html'
      success_url = reverse_lazy('ppm:manage-courses-taken')
      success_message = 'Safety course has been added to profile'
  
      def form_valid(self, form):
          course_taken = form.save(commit=False)
          course_taken.user = self.request.user
          course_taken.profile_id = self.kwargs['pk']
          course_taken.course_id = form.data['course']
          return super(AddSafetyCourseTakenView, self).form_valid(form)
  
      # override success_url to redirect to url with primary key
      def get_success_url(self):
          pk = self.kwargs['pk']
          return reverse('ppm:manage-courses-taken', kwargs={'pk': pk})
  
  
  class UpdateSafetyCourseTakenView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
      login_url = reverse_lazy('users:login')
      model = SafetyCoursesTaken
      form_class = SafetyCourseTakenForm
      template_name = 'ppm/forms/update-course-taken.html'
      success_url = reverse_lazy('ppm:manage-courses-taken')
      success_message = 'Safety course has been updated for profile'
  
      def get_success_url(self):
          profile = SafetyCoursesTaken.objects.get(id=self.kwargs['pk'])
          return reverse('ppm:manage-courses-taken', kwargs={'pk': profile.profile_id})
  </code></pre>
  
  <p>I've also tried setting <strong>init</strong> in my forms.py but that didn't work either.</p>
  
  <pre><code>SafetyCourseTakenForm(forms.ModelForm):
  ...
  ...
      def __init__(self, *args, **kwargs):
          super(SafetyCourseTakenForm, self).__init__(*args, **kwargs)
          self.fields['course'].queryset = SafetyCourse.objects.all()
  </code></pre>
  
  <p>So to reiterate. Why is my UpdateView only updating the 'conducted_date' and 'expiration_date' fields but NOT the 'course' field and why doesn't the select field have the proper form value on the edit form?</p>
  
  <p>Note: If you need more information then provided, please let me know.</p>