J'ai récemment mis à jour mon modèle, y ai ajouté un BooleanField, mais lorsque je le fais python manage.py syncdb
, il n'ajoute pas le nouveau champ à la base de données du modèle. Comment puis-je réparer cela ?
python
django
django-models
Hellnar
la source
la source
Réponses:
À partir de Django 1.7
Django a intégré la prise en charge des migrations - jetez un œil à la documentation .
Pour Django 1.6 et versions antérieures
Django ne prend pas en charge les migrations hors de la boîte. Il existe une application enfichable pour Django qui fait exactement cela, et cela fonctionne très bien. Ça s'appelle Sud .
la source
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 laalter table
commande SQL. (Cela vous permettra également de choisir les valeurs du champ pour vos enregistrements actuels.)la source
Suivez ces étapes:
la source
Comme suggéré dans la première réponse, j'ai essayé d'utiliser South , et après une heure de frustration avec d' obscures erreurs de migration , j'ai décidé d'utiliser Django Evolution à la place.
Je pense que c'est plus facile de commencer avec que South, et cela a parfaitement fonctionné la première fois que j'ai tapé
./manage.py evolve --hint --execute
, donc j'en suis content.la source
Havent a utilisé django pendant un certain temps, mais il me semble que je me souviens que syncdb exécute des commandes alter sur les tables db. vous devez supprimer la table puis la relancer et elle se créera à nouveau.
edit: désolé n'effectue PAS de modification.
la source
alter table
commandes, mais d'exécuter descreate table
commandes.Dans django 1.6
Au début, nous avons couru -
python manage.py sql <app name>
Ensuite, nous devons courir -
python manage.py syncdb
la source
Si vous exécutez Django avec Apache et MySQL, redémarrez apache après avoir effectué la migration avec makemigrations .
la source