title: Django - IntegrityError: null value in column "user_id" violates not-null constraint
body: <p>I have this error in my <code>ClientSetupView</code> that happens when I <code>Save</code> my input that I have added into my fields.</p>
  
  <p>Any suggestion would be grateful.</p>
  
  <p>Here is the log error:</p>
  
  <pre><code>Environment:
  
  
  Request Method: POST
  Request URL: http://192.168.33.10:8000/podfunnel/clientsetup/
  
  Django Version: 1.9
  Python Version: 2.7.6
  Installed Applications:
  ('producer',
   'django.contrib.admin',
   'django.contrib.sites',
   'registration',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'storages',
   'django_extensions',
   'randomslugfield',
   'adminsortable2',
   'crispy_forms')
  Installed Middleware:
  ('django.contrib.sessions.middleware.SessionMiddleware',
   'django.middleware.common.CommonMiddleware',
   'django.middleware.csrf.CsrfViewMiddleware',
   'django.contrib.auth.middleware.AuthenticationMiddleware',
   'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
   'django.contrib.messages.middleware.MessageMiddleware',
   'django.middleware.clickjacking.XFrameOptionsMiddleware',
   'django.middleware.security.SecurityMiddleware')
  
  
  
  Traceback:
  
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
    149.                     response = self.process_exception_by_middleware(e, request)
  
  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
    147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
  
  File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
    68.             return self.dispatch(request, *args, **kwargs)
  
  File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
    88.         return handler(request, *args, **kwargs)
  
  File "/home/vagrant/fullcast_project/producer/views/pod_funnel.py" in post
    150.             client.save()
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save
    700.                        force_update=force_update, update_fields=update_fields)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save_base
    728.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in _save_table
    812.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in _do_insert
    851.                                using=using, raw=raw)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" in manager_method
    122.                 return getattr(self.get_queryset(), name)(*args, **kwargs)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in _insert
    1039.         return query.get_compiler(using=using).execute_sql(return_id)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" in execute_sql
    1064.                 cursor.execute(sql, params)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py" in execute
    79.             return super(CursorDebugWrapper, self).execute(sql, params)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py" in execute
    64.                 return self.cursor.execute(sql, params)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py" in __exit__
    95.                 six.reraise(dj_exc_type, dj_exc_value, traceback)
  
  File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py" in execute
    64.                 return self.cursor.execute(sql, params)
  
  Exception Type: IntegrityError at /podfunnel/clientsetup/
  Exception Value: null value in column "user_id" violates not-null constraint
  DETAIL:  Failing row contains (66, 2016-06-19 23:03:11.186763+00, 2016-06-19 23:03:11.186868+00, Wilfredo, Lopez, , Fulano, null).
  </code></pre>
  
  <p>And here is my <code>ClientSetupView</code> in my <code>pod_funnel.py</code> view:</p>
  
  <pre><code>class ClientSetupView(View):
  form_class = ClientSetupForm
  template_name = 'pod_funnel/forms.html'
  
  # In the get we manage the request to get the form and prefill it if necessary
  def get(self, request, *args, **kwargs):
      # We need to check first if the current user has a client and podcast setup,
      # if so, prepopulate. Otherwise get empty form.
      initial_values = {}
      user = request.user
  
      if Client.objects.filter(user=user).exists():
  
          client = CLient.objects.filter(user=user).first()
  
          initial_values['first_name'] = client.first_name
          initial_values['last_name'] = client.last_name
  
          podcast = Podcast.objects.filter(client=client).first()
          request.session['client_id'] = client.id
  
          if podcast:
              initial_values['podcast_name'] = podcast.name
              # lets store podcast_id in session so we can retrieve it directly in post
              request.session['podcast_id'] = podcast.id
  
      form = self.form_class(initial=initial_values)
      return render(request, self.template_name, {'form': form})
  
  # In the the post we manage updates to the data
  def post(self, request, *args, **kwargs):
      form = self.form_class(request.POST)
  
      if form.is_valid():
          # lets get the data
          first_name = form.cleaned_data.get('first_name')
          last_name = form.cleaned_data.get('last_name')
          podcast_name = form.cleaned_data.get('podcast_name')
  
          # First we see if we have a client_id in session, if so we retrieve and update
          # otherwise we create a new one.
          client_id = request.session.get('client_id', None)
          if client_id is not None:
              request.session.delete('client_id')
              client = Client.objects.get(id=client_id)
          else:
              client = Client()
          client.first_name = first_name
          client.last_name = last_name
          client.company_name = podcast_name
          client.save()
  
          # Now we update or create the associated podcast.
          podcast_id = request.session.get('podcast_id', None)
          if podcast_id is not None:
              request.session.delete('podcast_id')
              podcast = Podcast.objects.get(id=podcast_id)
          else:
              podcast = Podcast()
          podcast.client = client
          podcast.name = podcast_name
          podcast.save()
  
          success, message_list = update_or_create_preset_for_podcast(podcast)
  
          # in any case we can continue with additional podcast setup, but we need
          # to attempt to create the preset one more time at some point before the
          # user can create the first productions.
          return HttpResponseRedirect(reverse('podfunnel:podcastsetup'))
  
      return render(request, self.template_name, {'form': form})
  </code></pre>