用過Django的人應(yīng)該都熟悉下面兩條命令:
# 將Model的改動(dòng)生成文件
python manage.py make migrations
# 此時(shí)數(shù)據(jù)庫中還不會(huì)生效
# 提交改動(dòng)
python manage.py migrate
# 此時(shí)數(shù)據(jù)庫就會(huì)自動(dòng)生成我們Model對應(yīng)的數(shù)據(jù)表了
上面兩條命令都是作用于全局的丑瞧,但是如果我們只想改動(dòng)的app下面的Model或者某個(gè)文件中的Model旦装,那就需要指定appname和filename:
# 生成指定app下面的改動(dòng)文件
python manage.py makemigrations appname
# 提交指定app下面指定的改動(dòng)文件
python manage.py migrate appname filename
既然有根據(jù)Model自動(dòng)生成數(shù)據(jù)庫表的命令,那么肯定就有根據(jù)數(shù)據(jù)庫表反向生成Model的命令
python manage.py inspectdb
# 使用這條命令走触,會(huì)根據(jù)設(shè)置的數(shù)據(jù)庫中的表在自動(dòng)生成對應(yīng)的Model代碼菲嘴,并打印出來
當(dāng)然也可以直接將打印的代碼直接導(dǎo)入到指定的Model文件中
python manage.py inspectdb > student/models.py
# 前提是創(chuàng)建了app(student)并且在setting.py文件中注冊過
配置了多個(gè)數(shù)據(jù)庫,則還可以配置數(shù)據(jù)庫別名來指定根據(jù)哪個(gè)庫中的表來生成Model
python manage.py inspectdb --database default >student/models.py
# default是默認(rèn)的別名
將指定的表生成對應(yīng)的Model
python manage.py inspectdb --database default table1 table2 >student/models.py
# 指定表明生成Model