2016-12-08 6 views
-2

django eindeutige Einschränkung salebook_saleman.user_id fehlgeschlagendjango eindeutige Einschränkung fehlgeschlagen 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') 

Nicht wirklich sicher, was es bedeutet, oder was verursacht es. Lassen Sie mich wissen, ob es eine einfache Lösung gibt. Vielen Dank! Update: Der Fehler ist:

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 

auf den ersten ich versuche, mein Modell saleman zu erweitern, indem abstractUser verwenden, und dieser Fehler happen.When ich meinen Code wiederholen, ist es noch alive.Sorry, ich weiß nicht, Was ist mit meinem Code passiert?

+0

Bitte senden Sie den Fehler, den Sie bekamen und versuchen zu erklären, was Sie versuchen zu tun, wenn immer den Fehler. – lucasnadalutti

+2

Die einfache Lösung besteht darin, Ihren 'User.objects.create_user (Benutzername, E-Mail, Passwort)' mit Versuch außer zu umgeben, aber glauben Sie mir, dass Sie die leichte Reparatur hier nicht wollen. Sie haben eine Menge anderer Dinge zu bewältigen. – e4c5

+0

Entschuldigung, ich aktualisiere meinen Fehler – cz328317643

Antwort

0

Es sieht so aus, als ob Ihr Saleman-Modell einen Fremdschlüssel oder ein Eins-zu-Eins-Feld für das Benutzermodell verwendet hat. Sie müssen eine neue Migration erstellen und dann ausführen, um das Feld aus der Datenbank zu entfernen.

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

Wenn ich Befehl migrieren in cmd ausführen, passiert dieser Fehler. – cz328317643

+0

Ja, ich mache mein Saleman-Modell ein Eins-zu-Eins-Feld, bevor ich meinen Code wiederhole. – cz328317643

+0

Ich kann diesen Fehler nicht beheben, weil ich nicht Ihre Modelle, Migrationsdateien und Datenbanken vor mir habe. Sie können es am einfachsten finden, die Datenbank zu löschen, die Migrationen zu löschen und erneut zu starten. – Alasdair

0

es scheint, wie Sie ein ‚_‘ hier verloren haben:

if newsaleman is not None: 
     new_saleman.save() 
Verwandte Themen