0

Je construis une application web django avec un modèle utilisateur personnalisé. À la fin du processus d'inscription lorsque je soumets le formulaire, une erreur d'intégrité se produit.Pourquoi ai-je une erreur d'intégrité django?

Voici l'erreur:

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

Cette erreur indique que le champ dans le modèle utilisateur personnalisé nommé job_history ne peut pas être nulle. Cependant un tel champ n'existe même pas.

Voici mon modèle d'utilisateur personnalisé:

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 

Je ne sais pas ce que cette erreur fait référence et pourquoi il se produit. J'ai ajouté le champ nommé job_history à un point précédent mais l'ai depuis supprimé et mis à jour la base de données en conséquence. Cette erreur n'a commencé à se produire que lorsque j'ai manipulé les modèles Job et User afin de créer un champ capable de stocker les travaux précédemment terminés par les utilisateurs. De plus amples détails sont disponibles dans this questions stackoverflow.

Pourquoi l'erreur d'intégrité se produit-elle et comment puis-je y remédier?

+0

Avez-vous exécuté makemigrations et migré après avoir supprimé le champ job_history? –

+0

Oui et quand je le fais juste dit: 'Aucun changement détecté' @GagikSukiasyan –

+0

S'il vous plaît essayer de lancer makemigration, puis migrer pour vos applications, son meilleur départ avec' manage.py migrer sites' puis 'manage.py migrer auth' –

Répondre

1

L'erreur indique que votre champ job_history est toujours dans la base de données et, pour une raison quelconque, vos migrations n'ont pas fonctionné. Vous devez donc regarder pourquoi votre migration n'a pas fonctionné. Vous pouvez essayer de faire la migration initiale faux:

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

Je suis tout à fait sûr que cela devrait aider, mais si cela peut vous aider à ne pas toujours aussi aller directement à votre base de données et supprimer la colonne job_history_id de DB

+0

Depuis l'application n'est pas encore déployée, j'ai juste supprimé la base de données, re-couru les migrations et cela a fonctionné. Merci. –