2016-12-08 9 views
-2

ジャンゴユニーク制約をuser_idの失敗ジャンゴユニーク制約が

model.py salebook_saleman.user_id失敗しました:

class Saleman(models.Model): 
    name = models.CharField(max_length=200) 
    password = models.CharField(max_length=200) 

    def __str__(self):    
     return self.name 

class Book(models.Model): 
    owner = models.ForeignKey(Saleman) 
    book_name = models.CharField(max_length=200) 
    book_text = models.TextField(max_length=2000,blank=True) 
    price = models.IntegerField(default=0) 
    telephone = models.CharField(max_length=200) 
    #image = models.ImageField(upload_to='photos') 
    pub_date = models.DateTimeField('date published',default = timezone.now) 

    def __str__(self): 
     return self.book_name 

view.py:

def user_register(request): 
    if request.method == 'POST': 
     username = request.POST['username'] 
     password = request.POST['password'] 
     email = request.POST['email'] 
     new_user = User.objects.create_user(username,email,password) 
     new_saleman = Saleman.objects.create(name=username,password=password) 
     if newsaleman is not None: 
      new_saleman.save() 
     if new_user is not None: 
      new_user.save() 
      context = {'Username':username} 
      return render(request,"salebook/index.html",context) 
    else: 
     context = {'error_message':'Register Fail'} 
     return render(request,"salebook/register.html",context) 


def user_login(request): 
if request.method == 'POST': 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
     if user.is_active: 
      login(request, user) 
      context = {'Username':username} 
      return render(request,"salebook/index.html",context) 
     else: 
      context = {'error_message':'User is locked'} 
      return render(request,"salebook/login.html",context) 
    else: 
     context = {'error_message':'Null User or Wrong Password'} 
     return render(request,"salebook/login.html",context) 
else: 
    return render_to_response('salebook/login.html') 

、それが何を意味するかまたは引き起こして本当にわからないがそれ。 簡単な修正がある場合はお知らせください。ありがとう! 更新: エラーは次のとおりです。

File "manage.py", line 22, in <module> 
execute_from_command_line(sys.argv) 
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 367, in execute_from_command_line 
utility.execute() 
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 359, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "C:\Python27\lib\site-packages\django\core\management\base.py", line 294, in run_from_argv 
self.execute(*args, **cmd_options) 
File "C:\Python27\lib\site-packages\django\core\management\base.py", line 345, in execute 
output = self.handle(*args, **options) 
File "C:\Python27\lib\site-packages\django\core\management\commands\migrate.py", line 204, in handle 
fake_initial=fake_initial, 
File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 115, in migrate 
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial) 
File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 145, in _migrate_all_forwards 
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial) 
File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 244, in apply_migration 
state = migration.apply(state, schema_editor) 
File "C:\Python27\lib\site-packages\django\db\migrations\migration.py", line 129, in apply 
operation.database_forwards(self.app_label, schema_editor, old_state, project_state) 
File "C:\Python27\lib\site-packages\django\db\migrations\operations\fields.py", line 84, in database_forwards 
field, 
File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\schema.py", line 231, in add_field 
self._remake_table(model, create_fields=[field]) 
File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\schema.py", line 199, in _remake_table 
self.quote_name(model._meta.db_table), 
File "C:\Python27\lib\site-packages\django\db\backends\base\schema.py", line 112, in execute 
cursor.execute(sql, params) 
File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 79, in execute 
return super(CursorDebugWrapper, self).execute(sql, params) 
File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
return self.cursor.execute(sql, params) 
File "C:\Python27\lib\site-packages\django\db\utils.py", line 94, in __exit__ 
six.reraise(dj_exc_type, dj_exc_value, traceback) 
File "C:\Python27\lib\site-packages\django\db\backends\utils.py", line 64, in execute 
return self.cursor.execute(sql, params) 
File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py", line 337, in execute 
return Database.Cursor.execute(self, query, params) 
django.db.utils.IntegrityError: UNIQUE constraint failed:salebook_saleman.user_id 

最初はそれはまだalive.Sorry、私はabstractUserを使用して、私のモデルsalemanを拡張しようとすると、このエラー私は私のコードをやり直すhappen.When、私は知りません私のコードに何が起こったのですか?

+0

あなたが得たエラーを投稿し、あなたがエラーを取得するときにやろうとしたかを説明してみてください。 – lucasnadalutti

+2

簡単な修正は、 'User.objects.create_user(username、email、password)'を試してみることですが、ここでは簡単に修正したくないと思います。あなたは取り組むべき他の多くのことがあります。 – e4c5

+0

申し訳ありませんが、私のエラーを更新します – cz328317643

答えて

0

Salemanモデルでは、ユーザーモデルに外部キーまたは一対一フィールドを使用していたようです。新しい移行を作成し、それを実行してデータベースからフィールドを削除する必要があります。

./manage.py makemigrations salebook 
./manage.py migrate 
+0

cmdで命令を実行すると、このエラーが発生します。 – cz328317643

+0

はい、コードをやり直す前にSalemanモデルを1対1のフィールドにします。 – cz328317643

+0

モデル、マイグレーションファイル、データベースが私の目の前にないので、そのエラーをデバッグできません。データベースを削除したり、移行を削除したり、再開したりするのが最も簡単です。 – Alasdair

0

それはあなたが失ってしまったように思える「_」ここ:

if newsaleman is not None: 
     new_saleman.save()