7 votes

Chargement d'un appareil avant un cycle de migration vers le sud

J'ai fait l'erreur de créer mon propre modèle d'utilisateur et j'essaie de m'en remettre.

J'ai créé une migration sud qui copie mes anciens modèles d'utilisateurs et crée des modèles django.contrib.auth.models.User. Pour s'assurer que mes utilisateurs actuels ne soient pas laissés dans l'ignorance, j'ai créé un certain nombre de unittests pour m'assurer que tout est converti de manière appropriée.

Donc, je dois tester la migration vers le sud et voir si ça a marché. Pour ce faire, je dois charger les données de l'ancien type d'utilisateur avant l'exécution de la migration. Comment dois-je procéder ?

7voto

Evgeny Points 5444

Lorsque la suite de tests est exécutée via python manage.py test someapp En effet, django crée d'abord une base de données de test, puis applique toutes les migrations dans l'ordre, et enfin exécute les cas de test. Donc, si l'objectif est de tester la migration elle-même, vous devrez charger des données fixes avant cette migration.

Vous pouvez ajouter une ligne ou deux de chargement à votre migration qui applique vos changements de modèle juste pour le plaisir de tester, puis supprimer.

def forwards(self, orm):
    from django.core import management
    management.call_command('loaddata', 'myfixture.json')
    ... your migration

Vous pouvez également ajouter une condition sur un paramètre de Django, ce qui vous évitera d'avoir à modifier le code plus tard.

0voto

diegueus9 Points 4616

C'est ce qu'on appelle les migrations de données : http://south.aeracode.org/docs/tutorial/part3.html Profitez-en !

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