2016-12-08 4 views
-2

장고 고유 제한 조건이 salebook_saleman.user_id 실패 USER_ID 실패장고 고유 제한 조건은

model.py :

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 

내가 abstractUser를 사용하여 내 모델 saleman을 확장하려고, 나는 내 코드를 다시 happen.When이 오류는 여전히 alive.Sorry, 나도 몰라 : 오류는 내 코드는 어떻게 된거야.

+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 모델에 일대일 필드가 있습니다. – cz328317643

+0

모델, 마이그레이션 파일 및 데이터베이스가 제 앞에 없기 때문에이 오류를 디버그 할 수 없습니다. 데이터베이스를 삭제하고 마이그레이션을 삭제 한 다음 다시 시작하는 것이 가장 쉽습니다. – Alasdair

0

당신이 잃은 것 같은 보이는 '_'여기 :

if newsaleman is not None: 
     new_saleman.save()