2016-04-26 4 views
0

Ich kopierte den vollständigen Beispielcode von: [Customizing-Admin-Benutzer] [1] (Teil der Django-Dokumentation), aber wenn ich es ausführen wird der Django nicht Fehler, aber wenn ich füge einen User hinzu, der Django wird den folgenden Fehler ausgeben. Ich habe keinen Code für das Beispiel geändert, und die Einstellung folgt dem Dokument. Follow-up-Verbindung ist Beispiel: https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#a-full-exampleFehler mit Beispielcode von Django docs

Fehler:

IntegrityError at /admin/app01/myuser/add/ 
NOT NULL constraint failed: app01_myuser.last_login 
Request Method: POST 
Request URL: http://127.0.0.1:8000/admin/app01/myuser/add/ 
Django Version: 1.8.5 
Exception Type: IntegrityError 
Exception Value:  
NOT NULL constraint failed: app01_myuser.last_login 
Exception Location: /Library/Python/2.7/site-packages/django/db/backends/sqlite3/base.py in execute, line  318 
+0

Können Sie bitte beschreiben, was Ihr Ziel ist. ? Was sonst hast du an diesem Code geändert? –

+0

Ja, weitere Informationen werden benötigt, um dies zu beheben. Stellen Sie sicher, dass Ihre Datenbank auf dem neuesten Stand ist (führen Sie Ihre Migrationen durch). Ab 1.7 -> 1.8 haben sich die Einschränkungen für das Feld "last_login" geändert. Dies hat jedoch keinen Einfluss auf Ihre App. Ich weiß es nicht! Und stellen Sie sicher, dass Sie einen Benutzer von django.contrib.auth.models importieren. –

+0

Ich habe versucht, neues Projekt verwenden gleichen Code aus Django-Dokument, der Django (1.8) läuft normal, aber wenn Sie den Benutzer bei Admin speichern, wird der Fehler kommen, – scott

Antwort

0

Es ist eindeutig eine Diskrepanz zwischen dem benutzerdefinierten Modell aus dem Django Beispielcode und die Definition der Tabelle verwenden es repräsentiert in der Datenbank. Der Fehler ist von der Datenbank, die besagt, dass die last_login Spalte der app01_myuser Tabelle eine NOT NULL Einschränkung hat, und Sie versuchen, einen Benutzer mit diesem Feld NULL zu erstellen.

Ihr Modell MyUser enthält das Feld last_login, das von AbstractBaseUser übernommen wurde. Hier ist die Definition von last_login aus der AbstractBaseUser Klasse:

last_login = models.DateTimeField(_('last login'), blank=True, null=True) 

Basierend auf dieser Definition von last_login, die NOT NULL Einschränkung nicht in der Datenbank existieren soll.

Stellen Sie sicher, dass Ihre Datenbank auf dem neuesten Stand ist, indem Sie Migrationen ausführen. Achten Sie auf Fehler, die beim Ausführen der Migrationen auftreten.

Sie können auch den Migrationscode app01 überprüfen, um zu sehen, wann und warum app01_myuser mit der NOT NULL Einschränkung in erster Linie erstellt wurde.