0

Ich baue eine Django-Webanwendung mit einem benutzerdefinierten Benutzermodell. Am Ende des Anmeldevorgangs tritt beim Senden des Formulars ein Integritätsfehler auf. HierWarum bekomme ich einen Integritätsfehler django?

ist der Fehler:

Exception Type: IntegrityError 
Exception Value: NOT NULL constraint failed: accounts_user.job_history_id 

Dieser Fehler zeigt an, dass das Feld in dem benutzerdefinierten Benutzermodell namens job_history nicht null sein kann. Ein solches Feld existiert jedoch nicht einmal.

Hier ist mein individuelles Benutzermodell:

class User(AbstractBaseUser, PermissionsMixin): 
    email = models.EmailField(unique=True) 
    username = models.CharField(max_length=40, unique=True) 
    avatar = models.ImageField(blank=True, null=True) 
    date_joined = models.DateTimeField(default=timezone.now) 
    is_active = models.BooleanField(default=True) 
    is_staff = models.BooleanField(default=False) 

    objects = UserManager() 

    USERNAME_FIELD = "email" 
    REQUIRED_FIELDS = ["username", "password"] 

    def __str__(self): 
     return "@{}".format(self.username) 

    def get_short_name(self): 
     return self.username 

Ich habe keine Ahnung, was dieser Fehler bezieht und warum es auftritt. Ich habe das Feld job_history an einem früheren Punkt hinzugefügt, aber seitdem gelöscht und die Datenbank entsprechend aktualisiert. Dieser Fehler trat erst auf, als ich an den Job- und Benutzermodellen herumfummelte, um ein Feld zu erreichen, in dem die zuvor ausgeführten Jobs der Benutzer gespeichert werden konnten. Weitere Details finden Sie in this Stackoverflow-Fragen.

Warum tritt der Integritätsfehler auf und wie behebe ich ihn?

+0

löschen Haben Sie Makemigrationen ausgeführt und migriert, nachdem Sie das Feld job_history entfernt haben? –

+0

Ja und wenn ich es tue, sagt nur: 'Keine Änderungen erkannt' @GagikSukiasyan –

+0

Bitte versuchen Makemigration zu laufen, dann migrieren Sie für Ihre Anwendungen, es besser starten mit' manage.py migrieren Sites 'dann' manage.py migrieren auth' –

Antwort

1

Der Fehler besagt, dass sich das Feld job_history noch in der Datenbank befindet und aus irgendeinem Grund Ihre Migrationen nicht funktionierten. Sie müssen also nachsehen, warum Ihre Migration nicht funktioniert hat. Sie können tun gefälschte erste Migration versuchen:

python manage.py makemigrations app_name 
python manage.py migrate --fake-initial 

Ich bin mir ziemlich sicher, dass dies helfen soll, aber wenn dies hilft sich auch nicht, dass Sie immer direkt auf Ihre DB gehen und die job_history_id Spalte von DB

+0

Da die App noch nicht bereitgestellt ist, löschte ich nur die Datenbank, führte die Migrationen erneut und es hat funktioniert. Vielen Dank. –

Verwandte Themen