Dans Django J'utilise manage.py makemigrations
et manage.py migrate
sur le fichier models.py suivant:Django: champ non annulable sans défaut
class Family(models.Model):
comment1 = models.CharField(max_length=80)
#comment2 = models.CharField(max_length=80)
Après cette initialisation réussie, j'ai changé models.py à (je viens décommenter le nouveau champ de modèle qui est essentiellement une copie de l'autre champ modèle):
class Family(models.Model):
comment1 = models.CharField(max_length=80)
comment2 = models.CharField(max_length=80)
maintenant, lorsque je tente de makemigrations
encore, je reçois le texte suivant erreur:
Vous essayez d'ajouter un « commentaire » champ non annulable à la famille sans un défaut; nous ne pouvons pas faire cela (la base de données a besoin de quelque chose pour remplir lignes existantes).
S'il vous plaît choisir une solution:
1) Fournir un défaut unique maintenant (sera mis sur toutes les lignes existantes avec une valeur NULL pour cette colonne)
2) Quitter, et laissez-moi ajouter une valeur par défaut dans models.py Sélectionnez une option:
Pourquoi n'ai-je pas obtenu cette erreur lors de l'initialisation?
Parce que vous étiez en train de créer la table à partir de zéro. Maintenant, comme l'erreur l'indique explicitement, la base de données a besoin de quelque chose pour remplir les lignes existantes. –
mais il n'y a aucune ligne existante. juste comme quand j'ai initialisé! – user3182532
ok je pense que je l'ai eu. bien qu'il n'y ait pas de lignes existantes, en principe il pourrait y avoir. Django ne sait pas comment enregistrer "comment2" des lignes existantes car il ne peut pas les enregistrer comme nulles et il n'a pas de valeur pour celles-ci.Lors de la première migration, Django a su: Je suis en train de créer une table, donc pas de données précédentes, donc null = Faux + aucune valeur par défaut n'est correcte. L'utilisateur ne pourra sauvegarder que des objets avec une valeur pour "comment1" mais c'est son problème. – user3182532