Bagaimana untuk Menghijrahkan Model Antara Apl Django dalam Django 1.7?

Barbara Streisand
Lepaskan: 2024-11-04 22:27:02
asal
499 orang telah melayarinya

How to Migrate Models Between Django Apps in Django 1.7?

Panduan Praktikal untuk Memindahkan Model Antara Apl Django dalam Django 1.7

Latar Belakang

Apabila pembangun Django berkembang, struktur projek pemfaktoran semula sering menjadi perlu untuk menambah baik organisasi dan kebolehselenggaraan. Ini termasuk mengalihkan model ke apl individu mereka sendiri untuk pengkapsulan yang lebih baik. Walau bagaimanapun, proses ini boleh menjadi menakutkan dalam versi Django yang lebih awal disebabkan oleh cabaran menangani kunci asing.

Penyelesaian untuk Django 1.7 dan Kemudian

Dengan pengenalan migrasi dalam Django 1.7, memindahkan model antara aplikasi telah menjadi lebih terurus. Operasi SeparateDatabaseAndState membolehkan kami menamakan semula jadual model secara serentak sambil mengemas kini keadaannya dalam berbilang apl.

Arahan Langkah demi Langkah

Mengalih keluar Model daripada Apl Lama

  1. Buat migrasi kosong untuk apl lama:
<code class="python">python manage.py makemigrations old_app --empty</code>
Salin selepas log masuk
  1. Dalam fail migrasi, tentukan operasi RenameTable, DeleteModel dan 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>
Salin selepas log masuk

Menambahkan Model pada Apl Baharu

  1. Salin model ke model.py apl baharu.
  2. Jalankan arahan makemigration untuk apl baharu:
<code class="python">python manage.py makemigrations new_app</code>
Salin selepas log masuk
  1. Dalam fail migrasi, balut operasi CreateModel dalam operasi SeparateDatabaseAndState untuk menghalang rekreasi jadual:
<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>
Salin selepas log masuk

Dengan mengikuti langkah ini, anda boleh berjaya berhijrah model antara apl dalam Django 1.7 dan lebih baharu, memastikan struktur projek yang bersih dan boleh diselenggara.

Atas ialah kandungan terperinci Bagaimana untuk Menghijrahkan Model Antara Apl Django dalam Django 1.7?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan