Maison > base de données > tutoriel mysql > Comment migrer des modèles entre les applications Django dans Django 1.7 ?

Comment migrer des modèles entre les applications Django dans Django 1.7 ?

Barbara Streisand
Libérer: 2024-11-04 22:27:02
original
567 Les gens l'ont consulté

How to Migrate Models Between Django Apps in Django 1.7?

Guide pratique pour migrer des modèles entre les applications Django dans Django 1.7

Contexte

À mesure qu'un développeur Django progresse, la refactorisation de la structure du projet devient souvent nécessaire pour l'améliorer organisation et maintenabilité. Cela inclut le déplacement des modèles vers leurs propres applications individuelles pour une meilleure encapsulation. Cependant, ce processus peut être intimidant dans les versions antérieures de Django en raison des défis liés au traitement des clés étrangères.

Solution pour Django 1.7 et versions ultérieures

Avec l'introduction des migrations dans Django 1.7, la migration des modèles entre les applications est devenu plus gérable. L'opération SeparateDatabaseAndState nous permet de renommer une table modèle simultanément tout en mettant à jour son état dans plusieurs applications.

Instructions étape par étape

Suppression du modèle de l'ancienne application

  1. Créer une migration vide pour l'ancien app :
<code class="python">python manage.py makemigrations old_app --empty</code>
Copier après la connexion
  1. Dans le fichier de migration, définissez les opérations RenameTable, DeleteModel et SeparateDatabaseAndState :
<code class="python">class Migration(migrations.Migration):

    dependencies = []

    database_operations = [
        migrations.RenameModel('TheModel', 'newapp_themodel')
    ]

    state_operations = [
        migrations.DeleteModel('TheModel')
    ]

    operations = [
        migrations.SeparateDatabaseAndState(
            database_operations=database_operations,
            state_operations=state_operations)
    ]</code>
Copier après la connexion

Ajout du modèle au nouveau App

  1. Copiez le modèle dans la nouvelle application model.py.
  2. Exécutez la commande makemigrations pour la nouvelle application :
<code class="python">python manage.py makemigrations new_app</code>
Copier après la connexion
  1. Dans le fichier de migration, encapsulez l'opération CreateModel dans une opération SeparateDatabaseAndState pour empêcher la table loisirs :
<code class="python">class Migration(migrations.Migration):

    dependencies = [
        ('old_app', 'above_migration')
    ]

    state_operations = [
        migrations.CreateModel(
            name='TheModel',
            fields=[
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
            ],
            options={
                'db_table': 'newapp_themodel',
            },
            bases=(models.Model,),
        )
    ]

    operations = [
        migrations.SeparateDatabaseAndState(state_operations=state_operations)
    ]</code>
Copier après la connexion

En suivant ces étapes, vous pouvez réussir à migrer des modèles entre applications dans Django 1.7 et plus tard, assurer une structure de projet propre et maintenable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal