首頁 > 資料庫 > mysql教程 > 如何在 Django 1.7 中的 Django 應用程式之間遷移模型?

如何在 Django 1.7 中的 Django 應用程式之間遷移模型?

Barbara Streisand
發布: 2024-11-04 22:27:02
原創
563 人瀏覽過

How to Migrate Models Between Django Apps in Django 1.7?

Django 1.7 中Django 應用之間遷移模型的實用指南

背景

隨著Django 開發人員的進步,重建專案結構背景

隨著Django 開發人員的進步,重建專案結構成為改進的必要條件組織性和可維護性。這包括將模型移動到自己的單獨應用程式中以實現更好的封裝。然而,由於處理外鍵的挑戰,這個過程在早期的 Django 版本中可能會令人望而生畏。

Django 1.7 及更高版本的解決方案

隨著 Django 1.7 中引入遷移,遷移模型應用程式之間的互動變得更加易於管理。 SeparateDatabaseAndState 操作允許我們在多個應用程式中更新其狀態的同時重新命名模型表。

逐步說明

    從舊應用程式中刪除模型
為舊應用程式建立一個空遷移:
<code class="python">python manage.py makemigrations old_app --empty</code>
登入後複製
在遷移檔案中,定義RenameTable、DeleteModel 和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>
登入後複製

    將模型新增至新應用程式
  1. 將模型加入新應用程式
<code class="python">python manage.py makemigrations new_app</code>
登入後複製
將模型複製到新應用程式的model.py。
  1. 為新應用程式執行makemigrations 指令:
<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>
登入後複製

在遷移檔案中,將CreateModel 操作包裝在SeparateDatabaseAndState 作業中,以防止表重新建立:按照以下步驟,您可以成功遷移Django 1.7 及更高版本中的應用程式之間的模型,確保乾淨且可維護的專案結構。

以上是如何在 Django 1.7 中的 Django 應用程式之間遷移模型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板