django根據數據庫生成模型類

1. settings.py配置數據庫信息

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        # To negate the effect of atomic request,
        # use @transaction.non_atomic_requests on views.
        'ATOMIC_REQUESTS': True,
        'NAME': sys_settings.DefaultMySQL.name,
        'USER': sys_settings.DefaultMySQL.user,
        'PASSWORD': sys_settings.DefaultMySQL.password,
        'HOST': sys_settings.DefaultMySQL.host,
        'PORT': sys_settings.DefaultMySQL.port,
        # 'OPTIONS': {"init_command": "SET storage_engine=INNODB"},
        "OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"},
        'TEST': {
            'NAME': 'test_%s' % sys_settings.DefaultMySQL.name,
            'CHARSET': 'utf8',
            'COLLATION': 'utf8_general_ci',
        }

    }
}

2. 反向生成模型

python manage.py inspectdb 
  • 如果只想指定單個表生成模型,則可以加上蓋表名
python manage.py inspectdb 表名 > models.py

3. 修正模型

  1. 模型名:可根據自己需求進行修改
  2. 模型所屬app:根據自己需求進行分配
  3. 模型外鍵引用:將所有使用ForeignKey的地方,模型都改成字符串,這樣就不會產生模型順序的問題。另外,如果引用的模型已經移動到其他app中了,那麼還要加上這個app的前綴
  4. 讓django管理模型:將Meta下的managed=False刪掉,如果保留這個,那麼以後對模型的任何修改,使用migrate都不會映射到數據庫
  5. 表名:切記不要修改表的名字db_table,不然映射到數據庫中,會發生找不到對應表的錯誤
  6. 外鍵級聯關係:根據自己實際情況進行修改
  7. 多對多關係:有數據庫反向生成模型時,多對多關係默認會創建第三張表來處理關係,這塊需要我們手動刪除第三張關係表,自己添加ManyToManyField關係字段,然後使用db_table=xxx指定數據表名稱爲數據庫中對應表的名稱。

4. 初始化

  • 執行python manage.py makemigrtaions生成初始化的遷移腳本。方便後面通過orm來管理表。
  • 執行python manage.py migrate --fake-initial

5. 數據庫映射

  • django的核心數據表映射到數據庫中
  • 執行python manage.py migrate
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章