2010-11-08 21 views
3

J'ai une application qui est devenue trop grande et j'aimerais la diviser en deux. Ce n'est pas une tâche facile du point de vue du code, mais j'ai plus peur des migrations de bases de données que je devrai effectuer. Existe-t-il un moyen éprouvé de faire ce genre de chose?Refactorisation des modèles d'une application django en deux

Actuellement mes pensées sont quelque chose comme ceci:

  • Utilisez sud
  • modèles Copier vers une autre application
  • Faire une migration de données pour copier des modèles pertinents d'une application à l'autre
  • Faire une autre migration qui supprime les modèles maintenant inutilisés de l'ancienne application
  • Devra créer un script qui exécute ces opérations dans l'ordre correct

Est-ce que quelqu'un a fait quelque chose comme ça?

Répondre

2

Pas besoin d'effectuer de migrations de base de données si vous ne le souhaitez pas. Il suffit de définir l'attribut db_table Meta sur vos modèles pour faire référence aux anciens noms, et tout sera parfaitement heureux.

+0

c'est une suggestion à laquelle je n'ai pas pensé, merci! – Baczek

+1

Après un peu plus de réflexion, je vois des problèmes potentiels avec le sud. Si je comprends bien, je vais devoir laisser les anciens modèles seuls et mettre des avertissements "DO NOT TOUCH" sur eux, donc sud ne va pas essayer de modifier/supprimer des tables ... – Baczek