Django : django.db.utils.IntegrityError: table__new.colonne may not be NULL
C’est le genre de problème qui arrive très souvent lorsqu’on touche à une base de données, en ajoutant un champ.
Pourquoi ? Parce que par défaut, les champs crées sans paramètres ne doivent pas être vides.
Exemple concret : je veux rajouter pour un modèle, un champ « exemple » :
class Groupe(models.Model):
    description = models.CharField(max_length=150)
    exemple = models.CharField()
Je fais « makemigration / migrate » et là, horreur : « django.db.utils.IntegrityError: main_groupe__new.exemple may not be NULL »
La solution
- Supprimer le dossier « migrations » de l’application concernée
 - Lancer un 
migrate --fake-initialqui va « simuler » un migrate, sans essayer de créer les tables - Lancer 
makemigration nomappli(!! c’est ici que si on oublie le nom de l’appli rien ne se passe !!) - Seconde astuce : supprimer le champ fautif
 - Lancer 
migrate: là il va supprimer de la base le champ fautif - Remettre le champ avec 
blank=True, default=None - Refaire 
makemigrationpuismigratesans préciser le nom de l’appli, comme d’habitude. 
Et votre nouveau code sera pris en compte :
class Groupe(models.Model):
    description = models.CharField(max_length=150)
    exemple = models.CharField(max_length=150,
                               blank=True, default=None)
Oui je sais ça a l’air long, mais en pratique ça prend deux-trois minutes seulement !