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
--Créer le nom de l'application "recette"
"Je souhaite refaire la migration" La procédure ci-dessous est décrite ci-dessous.
#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.
Supprimez (supprimez) toutes les tables générées par la migration dans le passé dans le DB de destination de la connexion.
[nom de l'application] Supprimer tout le contenu du dossier .migrations (Dans ce cas, recette.migrations)
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é.
Générez le fichier de migration comme d'habitude
>python manage.py makemigrations [nom de l'application]
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ésumé de la migration Django J'ai fait quelque chose d'étrange avec manage.py migrate.
Recommended Posts