[PYTHON] Django: la migration ne reflète pas le modèle dans DB

Non reflété

Comme le titre l'indique, même si j'ai migré depuis Django, cela ne s'est pas reflété dans la base de données et j'ai souffert, je vais donc l'enregistrer.

environnement

・ Windows10 Entreprise -Docker Desktop pour Windows: 2.1.0.1 ・ MySQL: 5.7.28 (sur Docker) ・ Django: 3.0 (sur Docker)

Contexte

Lorsque j'ai ajouté un nouveau modèle (appelé ** modèle A **) à models.py et que je l'ai migré, il n'a pas été reflété dans la base de données. Étant donné que les changements dans d'autres modèles sont reflétés, on estime que seul le ** modèle A ** pose problème.

J'ai essayé diverses choses

J'ai essayé diverses choses en référence aux articles suivants.

・ Que faire lorsque vous migrez avec Django mais cela n'est pas reflété dans la base de données [Django output] ・ Comment réinitialiser les migrations avec Django (en conservant la base de données existante) ・ Impossible de migrer avec django ・ Réflexion sur les models.py de Django (python manage.py makemigrations / migrate) ・ Le phénomène selon lequel une colonne est ajoutée au modèle mais pas ajoutée au fichier de migration ・ Que faire lorsque la migration de python manage.py ne fonctionne pas [Django]

Généralement, il a été dit que si vous supprimez l'historique de migration avec "python manage.py migrate --fake hoge zero", supprimez les fichiers dans le dossier, puis effectuez la migration et migrez, il sera reflété, mais il a été effacé.

Était-ce toi

Donc, une fois que je laisse tomber la base de données et que j'essaye de migrer à nouveau ... ** Le modèle A ** et un autre modèle (appelons-le ** modèle B ) ne sont pas reflétés. Quand je lis "models.py" avec une bonne impression de "?", Seuls ces deux modèles ont les caractères " managed = False **" dans "class Meta:".

models.py


    class Meta:
        managed = False
        db_table = 'temp'

Je l'ai supprimé et migré à nouveau, et c'est fait. Facile. Je n'ai tout simplement pas compris les bases. ** Le modèle B ** colle le format copié de quelque part, et je l'ai copié pour créer le ** modèle A **, il semble donc que je me suis retrouvé pris dans ce piège. En écrivant "managed = False", il semble que la migration ne sera pas gérée. Cela ne devrait pas être reflété. (J'ai écrit dans "History" que les changements d'autres modèles étaient reflétés, mais je ne l'ai pas essayé avec ** Model B **)

Voilà pourquoi

C'est un mystère pourquoi la source de copie a inclus cela, mais comme cela a fonctionné pour le moment ... Sous le phare vivant. J'ai décidé de regarder un peu plus près.

Recommended Posts

Django: la migration ne reflète pas le modèle dans DB
Modifications du modèle dans Django
Comment refléter CSS dans Django
Implémenter un modèle utilisateur personnalisé dans Django
Modèle Django: ManyToManyField
Modèle dans Django
Comment refléter ImageField dans Django + Docker (oreiller)
Formulaire à Django
Comment obtenir plusieurs objets de modèle au hasard dans Django
Commande d'initialisation de la base de données Django
Django haute performance - Modèle
[Django] Gérez les paramètres comme l'écriture dans settings.py avec un modèle
Créez un modèle de suivi facile à utiliser avec Django en utilisant ManyToManyField via