1、models.AutoField ---自增列 = int(11) 如果沒有的話,默認會生成一個名稱為 id 的列,如果要顯示的自定義一個自增列,必須將給列設置為主鍵 primary_key=True。
2、models.CharField ---字符串字段 單行輸入,用於較短的字符串,如要保存大量文本, 使用 TextField。必須 max_length 參數,django會根據這個參數在數據庫層和校驗層限制該字段所允許的最大字符數。
3、models.BooleanField ---布爾類型=tinyint(1) 不能為空,Blank=True
4、models.ComaSeparatedIntegerField ---用逗號分割的數字=varchar 繼承CharField,所以必須 max_lenght 參數,
5、models.DateField ---日期類型 date 對於參數,auto_now = True 則每次更新都會更新這個時間;auto_now_add 則只是第一次創建添加,之后的更新不再改變。
6、models.DateTimeField ---日期類型 datetime 同DateField的參數
7、models.Decimal ---十進制小數類型 = decimal 必須指定整數位max_digits和小數位decimal_places
8、models.EmailField ---字符串類型(正則表達式郵箱) =varchar 對字符串進行正則表達式 一個帶有檢查 Email 合法性的 CharField,不接受 maxlength 參數。
9、models.FloatField ---浮點類型 = double 浮點型字段。 必須提供兩個 參數, 參數描述:
max_digits:總位數(不包括小數點和符號)
decimal_places:小數位數。如:要保存最大值為 999 (小數點后保存2位),你要這樣定義字段:models.FloatField(…,max_digits=5, decimal_places=2),要保存最大值一百萬(小數點后保存10位)的話,你要這樣定義:models.FloatField(…,max_digits=19, decimal_places=10)
10、models.IntegerField ---整形 用於保存一個整數
11、models.BigIntegerField ---長整形
integer_field_ranges = {
'SmallIntegerField': (-32768, 32767),
'IntegerField': (-2147483648, 2147483647),
'BigIntegerField': (-9223372036854775808, 9223372036854775807),
'PositiveSmallIntegerField': (0, 32767),
'PositiveIntegerField': (0, 2147483647),
}
12、models.IPAddressField ---字符串類型(ip4正則表達式) 一個字符串形式的 IP 地址, (如 “202.1241.30″)。
13、models.GenericIPAddressField ---字符串類型(ip4和ip6是可選的) 參數protocol可以是:both、ipv4、ipv6 驗證時,會根據設置報錯
14、models.NullBooleanField ---允許為空的布爾類型 類似 BooleanField, 不過允許 NULL 作為其中一個選項。 推薦使用這個字段而不要用 BooleanField 加 null=True 選項。 admin 用一個選擇框 <select> (三個可選擇的值: “Unknown”, “Yes” 和 “No” ) 來表示這種字段數據。
15、models.PositiveIntegerField ---正Integer 類似 IntegerField, 但取值范圍為非負整數(這個字段應該是允許0值的…可以理解為無符號整數)
16、models.PositiveSmallIntegerField ---正smallInteger 正小整型字段,類似 PositiveIntegerField, 取值范圍較小(數據庫相關)SlugField“Slug” 是一個報紙術語。 slug 是某個東西的小小標記(短簽), 只包 含字母,數字,下划線和連字符。它們通常用於URLs。 若你使用 Django 開發版本,你可以指定 maxlength。 若 maxlength 未指定, Django 會使用默認長度: 50,它接受一個額外的參數:
prepopulate_from: 來源於slug的自動預置列表
17、models.SlugField ---減號、下划線、字母、數字 它們通常用於URLs。
18、models.SmallIntegerField ---數字 數據庫中的字段有:tinyint、smallint、int、bigint. 類似 IntegerField, 不過只允許某個取值范圍內的整數。(依賴數據庫)
19、models.TextField ---字符串=longtext ,一個容量很大的文本字段, admin 管理界面用 <textarea>多行編輯框表示該字段數據。
20、models.TimeField ---時間 HH:MM[:ss[.uuuuuu]] 時間字段,類似於 DateField 和 DateTimeField。
21、models.URLField ---字符串,地址正則表達式 用於保存URL。若 verify_exists 參數為 True (默認), 給定的 URL 會預先檢查是否存在(即URL是否被有效裝入且沒有返回404響應).
22、models.BinaryField ---二進制
23、models.ImageField ---圖片 類似 FileField, 不過要校驗上傳對象是否是一個合法圖片。它有兩個可選參數:height_field 和 width_field,如果提供這兩個參數,則圖片將按提供的高度和寬度規格保存。 該字段要求 Python Imaging 庫。
24、models.FilePathField ---選擇指定目錄按限制規則選擇文件,有三個參數可選, 其中”path”必需的,這三個參數可以同時使用, 參數描述:
path:必需參數,一個目錄的絕對文件系統路徑。 FilePathField 據此得到可選項目。 Example: “/home/images”;
match:可選參數, 一個正則表達式, 作為一個字符串, FilePathField 將使用它過濾文件名。 注意這個正則表達式只會應用到 base filename 而不是路徑全名。 Example: “foo。*\。txt^”, 將匹配文件 foo23.txt 卻不匹配 bar.txt 或 foo23.gif;
recursive:可選參數, 是否包括 path 下全部子目錄,True 或 False,默認值為 False。
match 僅應用於 base filename, 而不是路徑全名。 如:FilePathField(path=”/home/images”, match=”foo.*”, recursive=True)…會匹配 /home/images/foo.gif 而不匹配 /home/images/foo/bar.gif
25、models.FileField ---文件上傳字段。 要求一個必須有的參數: upload_to, 一個用於保存上載文件的本地文件系統路徑。 這個路徑必須包含 strftime formatting, 該格式將被上載文件的 date/time 替換(so that uploaded files don’t fill up the given directory)。在一個 model 中使用 FileField 或 ImageField 需要以下步驟:在你的 settings 文件中, 定義一個完整路徑給 MEDIA_ROOT 以便讓 Django在此處保存上傳文件。 (出於性能考慮,這些文件並不保存到數據庫。) 定義 MEDIA_URL 作為該目錄的公共 URL。 要確保該目錄對 WEB 服務器用戶帳號是可寫的。在你的 model 中添加 FileField 或 ImageField, 並確保定義了 upload_to 選項,以告訴 Django 使用 MEDIA_ROOT 的哪個子目錄保存上傳文件。你的數據庫中要保存的只是文件的路徑(相對於 MEDIA_ROOT)。 出於習慣你一定很想使用 Django 提供的 get_<fieldname>_url 函數。舉例來說,如果你的 ImageField 叫作 mug_shot, 你就可以在模板中以 {{ object。get_mug_shot_url }} 這樣的方式得到圖像的絕對路徑。
26、models.PhoneNumberField ---一個帶有合法美國風格電話號碼校驗的 CharField(格式:XXX-XXX-XXXX)
27、models.USStateField ---美國州名縮寫,由兩個字母組成(天朝人民無視)。
28、models.XMLField ---XML字符字段,校驗值是否為合法XML的 TextField,必須提供參數:
schema_path:校驗文本的 RelaxNG schema 的文件系統路徑。
Field 選項中的參數意義:
1.null :缺省設置為false.通常不將其用於字符型字段上,比如 CharField,TextField上.字符型字段如果沒有值會返回空字符串。 2.blank:該字段是否可以為空。如果為假,則必須有值 3.choices:一個用來選擇值的2維元組。第一個值是實際存儲的值,第二個用來方便進行選擇。如SEX_CHOICES= ((‘F’,'Female’),(‘M’,'Male’),) 4.core:db_column,db_index 如果為真將為此字段創建索引 5.default:設定缺省值 6.editable:如果為假,admin模式下將不能改寫。缺省為真 7.help_text:admin模式下幫助文檔 8.primary_key:設置主鍵,如果沒有設置django創建表時會自動加上: 9.radio_admin:用於admin模式下將select轉換為radio顯示。只用於ForeignKey或者設置了choices 10.unique:數據唯一unique=True. Only one11.unique_for_date:日期唯一,如下例中系統將不允許title和pub_date兩個都相同的數據重復出現 12.title = meta.CharField(maxlength=30,unique_for_date=’pub_date’) 13.unique_for_month / unique_for_year:用法同上 14.validator_list:有效性檢查。非有效產生 django.core.validators.ValidationError 錯誤
meta詳解:
1.abstract 這個屬性是定義當前的模型是不是一個抽象類。所謂抽象類是不會對應數據庫表的。一般我們用它來歸納一些公共屬性字段,然后繼承它的子類可以繼承這些字段。 Options.abstract 如果abstract = True 這個model就是一個抽象類 2.app_label 這個選型只在一種情況下使用,就是你的模型不在默認的應用程序包下的models.py文件中,這時候需要指定你這個模型是哪個應用程序的。 Options.app_label 如果一個model定義在默認的models.py,例如如果你的app的models在myapp.models子模塊下,你必須定義app_label讓Django知道它屬於哪一個app app_label = 'myapp' 3.db_table db_table是指定自定義數據庫表名的。Django有一套默認的按照一定規則生成數據模型對應的數據庫表明。 Options.db_table 定義該model在數據庫中的表名稱 db_table = 'Students' 如果你想使用自定義的表名,可以通過以下該屬性 table_name = 'my_owner_table' 4.db_teblespace Options.db_teblespace 定義這個model所使用的數據庫表空間。如果在項目的settin中定義那么它會使用這個值 5.get_latest_by Options.get_latest_by 在model中指定一個DateField或者DateTimeField。這個設置讓你在使用model的Manager上的lastest方法時,默認使用指定字段來排序 6.managed Options.managed 默認值為True,這意味着Django可以使用syncdb和reset命令來創建或移除對應的數據庫。默認值為True,如果你不希望這么做,可以把manage的值設置為False 7.order_with_respect_to 這個選項一般用於多對多的關系中,它指向一個關聯對象,就是說關聯對象找到這個對象后它是經過排序的。指定這個屬性后你會得到一個get_xxx_order()和set_xxx_order()的方法,通過它們你可以設置或者回去排序的對象 8.ordering 這個字段是告訴Django模型對象返回的記錄結果集是按照哪個字段排序的。這是一個字符串的元組或列表,沒有一個字符串都是一個字段和用一個可選的表明降序的'-'構成。當字段名前面沒有'-'時,將默認使用升序排列。使用'?'將會隨機排列 ordering=['order_date'] # 按訂單升序排列 ordering=['-order_date'] # 按訂單降序排列,-表示降序 ordering=['?order_date'] # 隨機排序,?表示隨機 ordering=['-pub_date','author'] # 以pub_date為降序,在以author升序排列 9.permissions permissions主要是為了在Django Admin管理模塊下使用的,如果你設置了這個屬性可以讓指定的方法權限描述更清晰可讀。Django自動為每個設置了admin的對象創建添加,刪除和修改的權限。 permissions = (('can_deliver_pizzas','Can deliver pizzas')) 10.proxy 這是為了實現代理模型使用的,如果proxy = True,表示model是其父的代理 model 11.unique_together unique_together這個選項用於:當你需要通過兩個字段保持唯一性時使用。比如假設你希望,一個Person的FirstName和LastName兩者的組合必須是唯一的,那么需要這樣設置: unique_together = (("first_name", "last_name"),) 一個ManyToManyField不能包含在unique_together中。如果你需要驗證關聯到ManyToManyField字段的唯一驗證,嘗試使用signal(信號)或者明確指定through屬性。 12.verbose_name verbose_name的意思很簡單,就是給你的模型類起一個更可讀的名字一般定義為中文,我們: verbose_name = "學校" 13.verbose_name_plural 這個選項是指定,模型的復數形式是什么,比如: verbose_name_plural = "學校" 如果不指定Django會自動在模型名稱后加一個’s’
