Maison  >  Article  >  base de données  >  Comment migrer de manière transparente des modèles entre les applications Django avec Django 1.7 ?

Comment migrer de manière transparente des modèles entre les applications Django avec Django 1.7 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 20:33:021017parcourir

How to Seamlessly Migrate Models Between Django Apps with Django 1.7?

Migration de modèles entre les applications Django avec Django 1.7

Avec Django 1.7, la gestion de la structure des modèles est devenue plus efficace. Supposons que vous disposiez de modèles dans une seule application que vous devez distribuer à des applications individuelles. Voici comment y parvenir en utilisant les migrations Django :

Suppression du modèle de l'ancienne application

  1. Créez une migration vide dans l'ancienne application :

    <code class="python">python manage.py makemigrations old_app --empty</code>
  2. Ajoutez le code suivant à la migration générée fichier :

    <code class="python">class Migration(migrations.Migration):
        dependencies = []
    
        database_operations = [
            migrations.AlterModelTable('TheModel', 'newapp_themodel')
        ]
    
        state_operations = [
            migrations.DeleteModel('TheModel')
        ]
    
        operations = [
            migrations.SeparateDatabaseAndState(
                database_operations=database_operations,
                state_operations=state_operations)
        ]</code>

Ajout d'un modèle à une nouvelle application

  1. Copiez le modèle dans le fichier model.py dans la nouvelle application .
  2. Créer une migration dans le nouveau app :

    <code class="python">python manage.py makemigrations new_app</code>
  3. Modifiez le fichier de migration généré pour inclure les éléments suivants :

    <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>

En suivant ces étapes, vous pouvez en toute transparence déplacez vos modèles entre les applications Django, garantissant une structure de base de données plus propre et plus organisée.

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!

Déclaration:
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