如果想要先在django專案中建立資料表然後匯入資料庫中,此部落格可作為參考
首先看乙個例子:
from django.db import models
class
address
(models.model)
: address_id = models.autofield(primary_key=
true
) name = models.charfield(max_length=10)
phone = models.charfield(max_length=11)
address = models.charfield(max_length=
100)
door_card = models.charfield(max_length=40)
user = models.foreignkey(
'userinformation'
, models.do_nothing)
class
meta
: managed =
false
db_table =
'address'
需要匯入models庫:from django.db import models
使用class來新建類,類中引數為models.model
autofield:
對映到資料庫中是 int 型別,可以有自動增長的特性。一般不需要使用這個型別,如果不指定主鍵,那麼模型會自動的生成乙個叫做 id 的自動增長的主鍵。如果你想指定乙個其他名字的並且具有自動增長的主鍵,使用 autofield 也是可以的。bigautofield:
64位的整形,類似於 autofield ,只不過是產生的資料的範圍是從1-9223372036854775807 。booleanfield:
在模型層面接收的是 true/false 。在資料庫層面是 tinyint 型別。如果沒有指定預設值,預設值=是 none 。charfield:
在資料庫層面是 varchar 型別。在 python 層面就是普通的字串。這個型別在使用的時候必須、要指定最大的長度,也即必須要傳遞 max_length 這個關鍵字引數進去。datefield:
日期型別。在 python 中是 datetime.date 型別,可以記錄年月日。在對映到資料庫中也是 date 型別。使用這個 field 可以傳遞以下幾個引數:datetimefield:\1. auto_now :在每次這個資料儲存的時候,都使用當前的時間。比如作為乙個記錄修改日期的字段,可以將這個屬性設定為 true 。
\2. auto_now_add :在每次資料第一次被新增進去的時候,都使用當前的時間。比如作為乙個記錄第一次入庫的字段,可以將這個屬性設定為 true 。
日期時間型別,類似於 datefield 。不僅僅可以儲存日期,還可以儲存時間。對映到資料庫中是 datetime 型別。這個 field 也可以使用 auto_now 和 auto_now_add 兩個屬性。timefield:
時間型別。在資料庫中是 time 型別。在 python 中是 datetime.time 型別。emailfield:
類似於 charfield 。在資料庫底層也是乙個 varchar 型別。最大長度是254個字元。filefield:
儲存檔案。imagefield:
儲存檔案。floatfield:
浮點型別。對映到資料庫中是 float 型別。integerfield:
整形。值的區間是 -2147483648——2147483647 。bigintegerfield:
大整形。值的區間是 -9223372036854775808——9223372036854775807 。positiveintegerfield:
正整形。值的區間是 0——2147483647 。smallintegerfield:
小整形。值的區間是 -32768——32767 。positivesmallintegerfield:
正小整形。值的區間是 0——32767 。textfield:
大量的文字型別。對映到資料庫中是longtext型別。uuidfield:
只能儲存 uuid 格式的字串。 uuid 是乙個32位的全球唯一的字串,一般用來作為主鍵。urlfield:
類似於 charfield ,只不過只能用來儲存 url 格式的字串。並且預設的 max_length 是200。
datafield:
decimalfield:
模型中 meta 配置:
對於一些模型級別的配置。我們可以在模型中定義乙個類,叫做 meta 。然後在這個類中新增一些類屬性來控制模型的作用。比如我們想要在資料庫對映的時候使用自己指定的表名,而不是使用模型的名稱。那麼我們可以在 meta 類中新增乙個 db_table 的屬性。
示例**如下:
class
book
(models.model)
: name = models.charfield(max_length=
20,null=
false
) desc = models.charfield(max_length=
100,name=
'description'
,db_column=
"description1"
)class
meta
: db_table =
'book_model'
以下將對 meta 類中的一些常用配置進行解釋。
db_table:
這個模型對映到資料庫中的表名。如果沒有指定這個引數,那麼在對映的時候將會使用模型名來作為預設的表名。
ordering:
設定在提取資料的排序方式。後面章節會講到如何查詢資料。比如我想在查詢資料的時候根據新增的時間排序
那麼示例**如下:
class
book
(models.model)
: name = models.charfield(max_length=
20,null=
false
) desc = models.charfield(max_length=
100,name=
'description'
,db_column=
"description1"
) pub_date = models.datetimefield(auto_now_add=
true
)class
meta
: db_table =
'book_model'
ordering =
['pub_date'
]
Django ORM模型Field介紹及外來鍵使用
常用字段 在django中,定義了一些field來與資料庫表中的字段型別來進行對映。autofield 對映到資料庫中的int型別,可以有自動增長的特性。一般不需要使用這個型別,如果不指定主鍵,那麼模型會自動的生成乙個叫做id的自動增長的主鍵。bigautofield 64位的整型,類似於autof...
6 Django ORM模型運算元據庫
專案中大量使用原生sql語句使得整個專案的 很繁瑣,就會出現很多問題 sql重複性較高,利用率低。大量原始sql語句可能是各種拼接的結果,當資料庫中內容做了修改,需要一一找到對應的sql進行檢查修改,浪費時間,不一定改全。可能存在sql注入的安全隱患問題,使得專案癱瘓。orm的使用會避免以上問題,其...
Django ORM模型 想說愛你不容易
from django.db import models class person models.model name models.charfield max length 10 varchar 10 在mysql v4中,代表了10個位元組 在mysql v5中,代表了10個字元。除了上面的字元...