django生成遷移檔案

2022-07-10 22:39:16 字數 1470 閱讀 1395

1.建立虛擬環境

在終端上輸入建立python3的虛擬環境

mkvirtualenv -p python3 虛擬環境的名字

安裝django和pymysql

3.建表

在模組名下的models.py中建立乙個表

4.更改資料庫

在專案名的同名檔案下的settings.py中databases,改成

5.安裝pymysql 模組,並且在專案的同名檔案下的—init.py檔案下新增語句

import pymysql

pymysql.install_as_mysqldb()

6.遷移

生成遷移檔案

python manage.py makemigrations

執行遷移檔案

python manage.py migrate

將第十一行的**改為:

herobook=models.foreignkey('bookinfo',on_delete=models.cascade,)

即在外鍵值的後面加上 on_delete=models.cascade

原因:

在django2.0後,定義外來鍵和一對一關係的時候需要加on_delete選項,此引數為了避免兩個表裡的資料不一致問題,不然會報錯:

typeerror: __init__() missing 1 required positional argument: 'on_delete'

舉例說明:

user=models.onetoonefield(user)

owner=models.foreignkey(userprofile)

需要改成:

user=models.onetoonefield(user,on_delete=models.cascade) --在老版本這個引數(models.cascade)是預設值

owner=models.foreignkey(userprofile,on_delete=models.cascade) --在老版本這個引數(models.cascade)是預設值

引數說明:

on_delete有cascade、protect、set_null、set_default、set()五個可選擇的值

cascade:此值設定,是級聯刪除。

protect:此值設定,是會報完整性錯誤。

set_null:此值設定,會把外來鍵設定為null,前提是允許為null。

set_default:此值設定,會把設定為外來鍵的預設值。

set():此值設定,會呼叫外面的值,可以是乙個函式。

一般情況下使用cascade就可以了。

django 生成遷移檔案失敗

component.esb.api rest framework django filters corsheaders role 2.通過執行命令強制生成migrations資料夾 python manage.py makemigrations empty screen這裡雖然會生成遷移檔案,但是遷...

Django 建立model並遷移生成資料庫表

第一步 建立model 在應用內models.py檔案裡編寫具體model,例如,投票和選項兩個model 第二步 啟用model 將應用新增到專案裡 在專案根目錄執行 python manage.py makemigrations polls會生成乙個以數字開頭的遷移檔案,當你對模型進行修改後都應...

django資料遷移實踐

背景 開始和同事結對開發,一人乙個sqlite3檔案資料庫來儲存配置,有兩個問題 使用django的migrate很麻煩,還得寫db router等控制同步 後來上線發現個問題,那就是檔案資料庫寫的時候會觸發uwsgi的touch reload機制而重啟專案 專案會繼續開發下去資料量會變多,檔案資料...