Heim  >  Artikel  >  Datenbank  >  Wie migriere ich Modelle zwischen Django-Apps in Django 1.7?

Wie migriere ich Modelle zwischen Django-Apps in Django 1.7?

Barbara Streisand
Barbara StreisandOriginal
2024-11-04 22:27:02438Durchsuche

How to Migrate Models Between Django Apps in Django 1.7?

Praktischer Leitfaden zum Migrieren von Modellen zwischen Django-Apps in Django 1.7

Hintergrund

Mit zunehmendem Fortschritt eines Django-Entwicklers wird zur Verbesserung häufig eine Umgestaltung der Projektstruktur erforderlich Organisation und Wartbarkeit. Dazu gehört das Verschieben von Modellen in ihre eigenen individuellen Apps zur besseren Kapselung. Allerdings kann dieser Prozess in früheren Django-Versionen aufgrund der Herausforderungen beim Umgang mit Fremdschlüsseln entmutigend sein.

Lösung für Django 1.7 und höher

Mit der Einführung von Migrationen in Django 1.7 werden Modelle migriert zwischen Apps ist überschaubarer geworden. Mit der SeparateDatabaseAndState-Operation können wir eine Modelltabelle gleichzeitig umbenennen und gleichzeitig ihren Status in mehreren Apps aktualisieren.

Schritt-für-Schritt-Anleitung

Entfernen des Modells aus der alten App

  1. Erstellen Sie eine leere Migration für die alte App:
<code class="python">python manage.py makemigrations old_app --empty</code>
  1. Definieren Sie in der Migrationsdatei die Vorgänge „RenameTable“, „DeleteModel“ und „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>

Hinzufügen des Modells zur neuen App

  1. Kopieren Sie das Modell in model.py der neuen App.
  2. Führen Sie den Befehl makemigrations für die neue App aus:
<code class="python">python manage.py makemigrations new_app</code>
  1. In der Migrationsdatei schließen Sie den CreateModel-Vorgang in einen SeparateDatabaseAndState-Vorgang ein, um eine Tabellenerneuerung zu verhindern:
<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>

Durch Befolgen dieser Schritte können Sie erfolgreich migrieren Modelle zwischen Apps in Django 1.7 und höher, um eine saubere und wartbare Projektstruktur sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie migriere ich Modelle zwischen Django-Apps in Django 1.7?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn