官术网_书友最值得收藏!

4.10 inspectdb

作用:查詢數據庫表或者視圖對應的Django模型。如果沒有提供參數,則僅在使用--includeviews選項時為視圖創建模型。

通過該命令可以很方便地將已有的數據庫表或者視圖轉換成Django模型。

語法:django-admin inspectdb [table [table ...]]

示例1:查看polls_question表對應的Django模型,輸入命令,如下圖所示。

示例2:查看數據庫視圖對應的Django模型。

首先在數據庫中創建一個視圖,該視圖能顯示調查問卷及問卷答案,視圖對應的SQL腳本如下:

    select q.question_text, q.pub_date, c.choice_text, c.votes
    from polls_question as q inner join polls_choice as c on q.id = c.question_id

新視圖在數據庫中的顯示如下圖所示。

執行inspectdb命令,如下圖所示。

注意

當inspectdb命令無法將數據庫中的字段類型轉換為Django模型字段類型時將會使用TextField,同時插入一條注釋:'This field type is a guess.'。

如果數據庫字段名是Python保留字,如class、pass,那么inspectdb命令會為模型屬性名自動添加一個“_field”后綴。

inspectdb命令不會根據數據庫字段默認值生成model字段的默認值。

默認情況下inspectdb命令生成的模型是非Django托管模型(managed=False),如果想生成托管模型,可以使用managed參數。

針對不同數據庫需要注意以下幾點:

在Oracle中使用--include-views可以為物化視圖(materialized view)生成模型。

在PostgreSQL中,inspectdb命令可以為外部表(foreign table)生成模型,使用--include-views可以為物化視圖(materialized view)生成模型,使用--include-partitions可以為部分表(partition table)生成模型。

主站蜘蛛池模板: 金溪县| 星子县| 文山县| 信宜市| 禹州市| 绥阳县| 略阳县| 永和县| 无为县| 赣州市| 将乐县| 原阳县| 开封县| 临海市| 舞钢市| 高邮市| 金华市| 霍州市| 池州市| 桦甸市| 天气| 买车| 会东县| 定安县| 三明市| 皮山县| 那曲县| 滨海县| 海门市| 阿拉善盟| 夹江县| 赣榆县| 垫江县| 铜陵市| 太康县| 简阳市| 昂仁县| 垣曲县| 蕉岭县| 嘉义县| 满洲里市|