85 votes

syncdb Django et un modèle actualisé

J’ai récemment mis à jour mon modèle, ajouté un BooleanField Cependant quand je fais `` , il n’ajoute pas le nouveau champ à la base de données pour le modèle. Comment puis-je y remédier ?

100voto

Dominic Rodger Points 44489
<h2>De Django 1,7 à partir</h2> <p>Django a en charge intégrée des migrations - jetez un oeil à <a href="https://docs.djangoproject.com/en/dev/topics/migrations/">la documentation</a>.</p> <h2>Django 1.6 ou version antérieure</h2> <p>Django ne supporte pas les migrations hors de la boîte. Il y a une app enfichable pour Django qui fait exactement cela bien, et il fonctionne très bien. Ça s’appelle <a href="http://south.aeracode.org">South</a>.</p>

14voto

che Points 6899

Django actuellement ne le fait pas automatiquement. Vos options sont les suivantes:

  1. Supprimer la table de la base de données, puis de le recréer dans le nouveau formulaire à l'aide de syncdb.
  2. Imprimer SQL pour la base de données à l'aide de python manage.py sql (appname), trouver l'ajout d'une ligne pour le champ et l'ajouter manuellement à l'aide d' alter table la commande SQL. (Cela vous permettra aussi de choisir des valeurs du champ pour vos dossiers en cours.)
  3. Utiliser du Sud (par Dominique réponse).

11voto

Soviut Points 26384

Procédez comme suit :

  1. Exporter vos données vers un appareil à l’aide de la commande de gestion dumpdata
  2. Supprimer la table
  3. Exécutez syncdb
  4. Recharger vos données de l’appareil à l’aide de la commande de gestion loaddata

8voto

Dan Points 16670

Comme suggéré dans le haut de réponse, j'ai essayé d'utiliser le Sud, et après une heure de frustration obscur de la migration des erreurs décidé d'aller avec Django Évolution de la place.

Je pense qu'il est plus facile de commencer avec de Sud, et il a parfaitement fonctionné la première fois que j'ai tapé ./manage.py evolve --hint --execute,, donc je suis heureux avec elle.

2voto

Aliixx Points 643

n’ont pas utilisé django dans un certain temps, mais je crois me souvenir que syncdb répète-t-il modifier des commandes sur les tables de la db. vous devez supprimer la table, puis exécutez-le à nouveau et il créera à nouveau.

Edit : Désolé n’effectue pas modifier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X