title: Django form: ask for confirmation before committing to db
body: <p>Update: The solution can be found as a separate answer</p>
  
  <p>I am making a Django form to allow users to add tvshows to my db. To do this I have a <code>Tvshow</code> model, a <code>TvshowModelForm</code> and I use the generic class-based views <code>CreateTvshowView</code>/<code>UpdateTvshowView</code> to generate the form. </p>
  
  <p>Now comes my problem: lets say a user wants to add a show to the db, e.g. Game of Thrones. If a show by this title already exists, I want to prompt the user for confirmation that this is indeed a different show than the one in the db, and if no similar show exists I want to commit it to the db. How do I best handle this confirmation?</p>
  
  <p>Some of my experiments are shown in the code below, but maybe I am going about this the wrong way. The base of my solution is to include a hidden field <code>force</code>, which should be set to 1 if the user gets prompted if he is sure he wants to commit this data, so that I can read out whether this thing is 1 to decide whether the user clicked submit again, thereby telling me that he wants to store it.</p>
  
  <p>I would love to hear what you guy's think on how to solve this.</p>
  
  <p>views.py</p>
  
  <pre><code>class TvshowModelForm(forms.ModelForm):
      force = forms.CharField(required=False, initial=0)
      def __init__(self, *args, **kwargs):
          super(TvshowModelForm, self).__init__(*args, **kwargs)
  
      class Meta:
          model = Tvshow
          exclude = ('user')
  
  class UpdateTvshowView(UpdateView):
      form_class = TvshowModelForm
      model = Tvshow
      template_name = "tvshow_form.html"
  
      #Only the user who added it should be allowed to edit
      def form_valid(self, form):
          self.object = form.save(commit=False)
          #Check for duplicates and similar results, raise an error/warning if one is found     
          dup_list = get_object_duplicates(Tvshow, title = self.object.title)
          if dup_list:
              messages.add_message(self.request, messages.WARNING, 
  'A tv show with this name already exists. Are you sure this is not the same one? Click submit again once you\'re sure this is new content'
                 )
  #            Experiment 1, I don't know why this doesn't work
  #            form.fields['force'] = forms.CharField(required=False, initial=1)
  
  #            Experiment 2, does not work: cleaned_data is not used to generate the new form
  #            if form.is_valid():
  #                form.cleaned_data['force'] = 1
  
  #            Experiment 3, does not work: querydict is immutable
  #            form.data['force'] = u'1'
  
          if self.object.user != self.request.user:
              messages.add_message(self.request, messages.ERROR, 'Only the user who added this content is allowed to edit it.')
  
          if not messages.get_messages(self.request):
              return super(UpdateTvshowView, self).form_valid(form)
          else:
              return super(UpdateTvshowView, self).form_invalid(form)
  </code></pre>