title: django form __init__ not including fields
body: <p>I have made a custom action for the admin page of one of my models wherein permissions can be granted to all the selected objects. There is an intermediate page which shows a multichoice field of the users to whom the permissions are to be granted.</p>
  
  <p>The entire action, start to finish, was working fine unless I ran into some (unrelated) issues with 'south'. As a fix, I had to include <code>__init__</code> in the forms declaration. Now however, the users and selected objects in the intermediate stream load correctly but the form is not validating once the 'Okay' button is clicked. </p>
  
  <p>From what I have debugged, when I use <code>if request.POST.get('post'):</code>, it doesn't send a POST back once OK is clicked. When I use <code>if request.method == 'POST':</code>, it sends a POST while displaying the form but when OK is clicked, the form fails the <code>is_valid()</code> test because fields are missing.</p>
  
  <p>The same code worked flawlessly when I didn't use <code>__init__</code></p>
  
  <pre><code>from models import ClientInfo
  from customauth.models import ZenatixUser
  
  
  class SelectUserForm(forms.Form):
      _selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
  
      def __init__(self, initial, *args, **kwargs):
          super(SelectUserForm, self).__init__(*args, **kwargs)
          try:
              clientObj = ClientInfo.objects.all()[:1].get()
              client = clientObj.corp
              client_name = client.shortName
              client_id = client.cID
              userList = ZenatixUser.objects.filter(corp__cID=client_id)
              #user = forms.ModelMultipleChoiceField(userList, label=client_name + ' users ')
              self.fields['user'] = forms.ModelMultipleChoiceField(userList, label=client_name + ' users ')
              self._selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
          except ClientInfo.DoesNotExist:
              raise Exception('Please add a client info object to the client')
  
  
  def grant_read_permission(modeladmin, request, queryset):
      opts = modeladmin.model._meta
      app_label = opts.app_label
  
      form = None
  
      #if request.method == 'POST':
      if request.POST.get('post'):
          print 'POST'
          form = SelectUserForm(request.POST)
          print form.errors
  
          if form.is_valid():
              print 'Valid'
              users = form.cleaned_data['user']
              stream_count = queryset.count()
              user_count = len(users)
              for stream in queryset:
                  for user in users:
                      print user, stream
                      assign_perm('read_stream', user, stream)
  
              plural = ['', '']
              if user_count != 1:
                  plural[0] = 's'
              if stream_count != 1:
                  plural[1] = 's'
  
              modeladmin.message_user(request, "Successfully granted read permission to %d user%s on %d stream%s." % (
                  user_count, plural[0], stream_count, plural[1]))
  
              return None
  
      if not form:
          form = SelectUserForm(initial={'_selected_action': request.POST.getlist(admin.ACTION_CHECKBOX_NAME)})
  
      if len(queryset) == 1:
          objects_name = force_unicode(opts.verbose_name)
      else:
          objects_name = force_unicode(opts.verbose_name_plural)
  
      stream_list = []
      for stream in queryset:
          stream_list.append(stream.path)
  
      title = _("Are you sure?")
  
      context = {
          "title": title,
          "objects_name": objects_name,
          'queryset': stream_list,
          "opts": opts,
          "app_label": app_label,
          'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,
          'tag_form': form,
      }
  
      return render_to_response("admin/grant_read_permission.html", context,
                                context_instance=template.RequestContext(request))
  </code></pre>