J'ai récemment mis à jour mon modèle, y ai ajouté un BooleanField. Cependant, lorsque je fais python manage.py syncdb
, le nouveau champ n'est pas ajouté à la base de données pour le modèle. Comment puis-je réparer cela ?
Django a intégré le support pour les migrations - jetez un œil à la documentation .
Django ne prend pas en charge les migrations prêtes à l'emploi. Il existe une application enfichable pour Django qui fait exactement cela et qui fonctionne très bien. Ça s'appelle sud .
Django ne le fait actuellement pas automatiquement. Vos options sont:
python manage.py sql (appname)
, recherchez la ligne ajoutée pour le champ et ajoutez-la manuellement à l'aide de la commande alter table
SQL. (Cela vous permettra également de choisir les valeurs du champ pour vos enregistrements actuels.)Comme suggéré dans la réponse du haut, j'ai essayé d'utiliser Sud , et après une heure de frustration avec des erreurs de migration obscures a décidé d'aller avec Django Evolution à la place.
Je pense qu’il est plus facile de commencer que South, et cela a parfaitement fonctionné la première fois que j’ai tapé ./manage.py evolve --hint --execute
, alors j’en suis heureux.
Havent a utilisé Django depuis un moment, mais je crois me souvenir que syncdb exécute des commandes de modification sur des tables de base de données. vous devez supprimer la table, puis exécuter à nouveau et il va créer à nouveau.
edit: désolé n'effectue pas alter.
À Django 1.6
Au début, nous avons exécuté - python manage.py sql <app name>
Ensuite, nous devons exécuter - python manage.py syncdb
Si vous utilisez Django avec Apache et MySQL, redémarrez Apache après avoir effectué la migration avec makemigrations .