title: django forms and __init__ function: unexpected keyword argument 'user'
body: <p>I follow kenneth love crash course and I get unexpected error which I can not solve:</p>
  
  <p>"<strong>init</strong>() got an unexpected keyword argument 'user'"</p>
  
  <p>here is the form class:</p>
  
  <pre><code>class TalkTalkListForm(forms.ModelForm):
      class Meta:
          model = models.Talk
          fields = ('talk_list',)
  
      def __init__(self, *args, **kwargs):
          super(TalkTalkListForm, self).__init__(*args, **kwargs)
          self.fields['talk_list'].queryset = (
              self.instance.talk_list.user.lists.all())
  
          self.helper = FormHelper()
          self.helper.layout = Layout(
              'talk_list',
              ButtonHolder(
                  Submit('move', 'Move', css_class='btn-primary')
              )
          )
  </code></pre>
  
  <p>and here is Talk model:</p>
  
  <pre><code>class Talk(models.Model):
      ROOM_CHOICES = (
              ('BS1_O', 'BS1_O'),
              ('BS1TC', 'BS1TC'),
              ('BS3_O', 'BS3_O'),
              ('BS3TC', 'BS3TC'),
      )
      talk_list = models.ForeignKey(TalkList, related_name='talks')
      name = models.CharField(max_length=255)
      slug = models.SlugField(max_length=255, blank=True)
      when = models.DateTimeField()
      room = models.CharField(max_length=5, choices=ROOM_CHOICES)
      host = models.CharField(max_length=255)
      talk_rating = models.IntegerField(blank=True, default=0)
      speaker_rating = models.IntegerField(blank=True, default=0)   
  
      notes = models.TextField(blank=True, default='')
      notes_html = models.TextField(blank=True, default='', editable=False)
  
      class Meta:
          ordering = ('when', 'room')
          unique_together = ('talk_list', 'name')
  
      def __unicode__(self):
          return self.name
  
      def save(self, *args, **kwargs):
          self.slug = slugify(self.name)
          self.notes_html = mistune.markdown(self.notes)
          super(Talk, self).save(*args, **kwargs)
  
      def get_absolute_url(self):
          return reverse('talks:talks:detail', kwargs={'slug': self.slug})       
  
      @property
      def overall_rating(self):
          if self.talk_rating and self.speaker_rating:
              return (self.talk_rating + self.speaker_rating) / 2
          return 0  
  </code></pre>
  
  <p>I can see Talk has not got an attribute 'user' but I pass 'user' attribute to <strong>init</strong> somehow. Is it the reason of the problem ? </p>
  
  <p>I know kwargs are named arguments so a named argument not expected will throw an error but I do not know how to get rid off the error. </p>
  
  <p>UPDATE:</p>
  
  <pre><code>class TalkDetailView(views.LoginRequiredMixin, generic.DetailView):
      http_method_names = ['get', 'post']
      model = models.Talk
  
      def get_queryset(self):
          return self.model.objects.filter(talk_list__user=self.request.user)
  
      def get_context_data(self, **kwargs):
          context = super(TalkDetailView, self).get_context_data(**kwargs)
          obj = context['object']
          rating_form = forms.TalkRatingForm(self.request.POST or None,instance=obj)
  
          list_form = forms.TalkTalkListForm(self.request.POST or None,instance=obj)        
  
          context.update({
              'rating_form': rating_form,
              'list_form': list_form
          })
          return context
  
      def post(self, request, *args, **kwargs):
          self.object = self.get_object()
          if 'save' in request.POST:
              talk_form = forms.TalkRatingForm(request.POST or None,
                                               instance=self.object)
              if talk_form.is_valid():
                  talk_form.save()
  
          if 'move' in request.POST:
              list_form = forms.TalkTalkListForm(request.POST or None,
                                                 instance=self.object,
                                                 user=request.user)
              if list_form.is_valid():
                  list_form.save()
  
          return redirect(self.object)
  </code></pre>