3

私はDjangoを学び始めたばかりです。非常に単純なユーザー登録関数 (PSQL を使用) を作成しようとしていますが、常に次のメッセージが表示されます。

整合性エラー: 列 "email" の null 値が not-null 制約に違反しています データベースに問題があると思われます。しかし、私はそれがなぜなのか理解できませんでした..

私は Django 1.5.1 と PSQL 9.1.9 を使用しています。

models.py:

from django.db import models
class User(models.Model):
    name = models.CharField(max_length=30)
    email = models.EmailField(verbose_name='e-mail')
    password = models.CharField(max_length=16)

ビュー.py:

from portfolioSite.forms import register_form
from django.shortcuts import render
from django.http import HttpResponseRedirect
from portfolioSite.models import User

def register(request):
    if request.method == 'POST':
        registerForm = register_form(request.POST)
        if registerForm.is_valid():
            User.objects.create(name = registerForm.cleaned_data['name'],
                email = registerForm.cleaned_data['email'],
                password = registerForm.cleaned_data['password2'])
        return HttpResponseRedirect('/success/')
    else:
        registerForm = register_form()
    return render(request, 'register_form.html', {'form':registerForm})

トレースバック:

File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  115.                         response = callback(request, *callback_args, **callback_kwargs)
File "/home/guangyi/Django/projects/mysite/portfolioSite/views.py" in register
  13.                               password = registerForm.cleaned_data['password2']
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" in create
  149.         return self.get_query_set().create(**kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in create
  402.         obj.save(force_insert=True, using=self.db)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save
  546.                        force_update=force_update, update_fields=update_fields)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py" in save_base
  650.                 result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py" in _insert
  215.         return insert_query(self.model, objs, fields, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py" in insert_query
  1661.     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
  937.             cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py" in execute
  41.             return self.cursor.execute(sql, params)
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py" in execute
  56.             six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
File "/usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py" in execute
  54.             return self.cursor.execute(query, args)

Exception Type: IntegrityError at /register/
Exception Value: null value in column "email" violates not-null constraint

データベースをチェックすると、porfolioSite_userというテーブルがあることがわかりましたが、それをドロップすると、psqlはテーブルが存在しないと言いました...とても混乱しています....

4

3 に答える 3

0

POST リクエストを送信する前にメール フィールドを確認してください。リクエストを送信する前に、メール フィールドが NULL でないことを確認してください。

于 2013-08-21T20:54:34.550 に答える