[PYTHON] [Django] Refaire la migration

[Django] Refaire la migration

Ceci est un mémo pour les débutants Django. Il fut un temps où je voulais réécrire le modèle et refaire la migration lors de la construction de la base de données, mais j'ai eu du mal avec diverses erreurs, je vais donc noter la solution.

[environnement] Django 2.01 python 3.7.2

supposition

--Créer le nom de l'application "recette"

Refaire la procédure

"Je souhaite refaire la migration" La procédure ci-dessous est décrite ci-dessous.

1. Vérifiez l'historique de migration passé

#Vous pouvez voir l'historique de migration passé
>python manage.py showmigrations
admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
recipe
 [X] 0001_initial
sessions
 [X] 0001_initial

Le résultat est comme ci-dessus, et celui avec x entre [] est l'historique de la migration appliquée. Puisque [x] est également attaché à la recette, on peut juger qu'elle a été appliquée.

2. Supprimer toutes les tables

Supprimez (supprimez) toutes les tables générées par la migration dans le passé dans le DB de destination de la connexion.

3. Supprimez le contenu du dossier migrations de l'application

[nom de l'application] Supprimer tout le contenu du dossier .migrations (Dans ce cas, recette.migrations)

4. Supprimer l'historique de migration

Supprimez l'historique avec la commande suivante avec l'option --fake. (Lors de la réapplication de l'utilisateur personnalisé, cela n'a pas été résolu à moins que tous aient été supprimés, j'ai donc tout supprimé de l'administrateur aux sections.)

>python3 manage.py migrate --fake [Cible à supprimer] zero

#Exemple:Cela supprimera l'historique des recettes
#>python3 manage.py migrate --fake recipe zero

Vérifiez si l'historique a été supprimé avec la même commande que 1.

admin
 [ ] 0001_initial
 [ ] 0002_logentry_remove_auto_add
 [ ] 0003_logentry_add_action_flag_choices
auth
 [ ] 0001_initial
 [ ] 0002_alter_permission_name_max_length
 [ ] 0003_alter_user_email_max_length
 [ ] 0004_alter_user_username_opts
 [ ] 0005_alter_user_last_login_null
 [ ] 0006_require_contenttypes_0002
 [ ] 0007_alter_validators_add_error_messages
 [ ] 0008_alter_user_username_max_length
 [ ] 0009_alter_user_last_name_max_length
 [ ] 0010_alter_group_name_max_length
 [ ] 0011_update_proxy_permissions
contenttypes
 [ ] 0001_initial
 [ ] 0002_remove_content_type_name
recipe
 [ ] 0001_initial
sessions
 [ ] 0001_initial

Assurez-vous que tout l'historique a été supprimé.

5. Générer le fichier de migration d'application

Générez le fichier de migration comme d'habitude

>python manage.py makemigrations [nom de l'application]

6. Exécutez migrate

Exécutez migrer comme d'habitude

>python manage.py migrate

Vérifiez maintenant la base de données et assurez-vous que la table est générée.

C'est tout. Si vous avez des erreurs, veuillez nous en informer.

référence

Résumé de la migration Django J'ai fait quelque chose d'étrange avec manage.py migrate.

Recommended Posts

[Django] Refaire la migration
Django
mise à jour de Django
Django Note 4
Migrer les applications Django exécutées sur Python 2.7 vers Python 3.5
Mémorandum Django
recherche django
Installation de Django
Résumé de Django
Django # 2 (modèle)
Django Note 5
Django Hands On
Touchez django
Mémo Django
Résumé de Django
Les bases de Django
Django Shoho
Paramètres initiaux de Django
Django + Docker
Glossaire Django
Installation de Django
Django: Références
Django Note 1
Django Note 3
Django Note 2
Démarrage de Django
Mémo Django
Django NullCharField
Tout refaire pour l'écran de connexion Django