1

ClientSetupViewに私のフィールドに追加した入力がSaveになるとこのエラーが発生します。Django - IntegrityError:カラム "user_id"のnull値がnullでない制約に違反しています

ご迷惑をおかけして申し訳ございません。ここで

はログエラーです:

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). 

そして、ここでは私のpod_funnel.pyビューで私のClientSetupViewです:あなたのポストの方法で

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}) 

答えて

1

は提供:

user = request.user 

    if client_id is not None: 
     request.session.delete('client_id') 
     client = Client.objects.get(id=client_id) 
    else: 
     client = Client.objects.create(user=user) # your user must not be empty 
+0

はそれを手に入れました。ありがとう! –

+0

ようこそ。 – dmitryro

関連する問題