À 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.
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.
<code class="python">python manage.py makemigrations old_app --empty</code>
<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>
<code class="python">python manage.py makemigrations new_app</code>
<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 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!