V=models.CharField(max_length=None<, **options>) #varcharpython
V=models.EmailField(<max_length=75, **options="">) #varchargit
V=models.URLField(<verify_exists=true, **options="" max_length="200,">) #varchar正則表達式
V=models.FileField(upload_to=None<, max_length=100, **options>) #varchar #upload_to指定保存目錄可帶格式,數據庫
V=models.ImageField(upload_to=None<, height_field=None, width_field=None, max_length=100, **options>)django
V=models.IPAddressField(<**options>) #varcharpost
V=models.FilePathField(path=None<, match=None, recursive=False, max_length=100, **options>) #varcharurl
V=models.SlugField(<max_length=50, **options="">) #varchar,標籤,內含索引spa
V=models.CommaSeparatedIntegerField(max_length=None<, **options>) #varcharcode
V=models.IntegerField(<**options>) #intxml
V=models.PositiveIntegerField(<**options>) #int 正整數
V=models.SmallIntegerField(<**options>) #smallint
V=models.PositiveSmallIntegerField(<**options>) #smallint 正整數
V=models.AutoField(**options) #int;在Django代碼內是自增
V=models.DecimalField(max_digits=None, decimal_places=None<, **options>) #decimal
V=models.FloatField(<**options>) #real V=models.BooleanField(**options) #boolean或bit
V=models.NullBooleanField(<**options>) #bit字段上能夠設置上null值
V=models.DateField(<auto_now=false, **options="" auto_now_add="False,">) #date #auto_now最後修改記錄的日期;auto_now_add添加記錄的日期
V=models.DateTimeField(<auto_now=false, **options="" auto_now_add="False,">) #datetime
V=models.TimeField(<auto_now=false, **options="" auto_now_add="False,">) #time
V=models.TextField(<**options>) #text
V=models.XMLField(schema_path=None<, **options>) #text ——————————————————————————–
V=models.ForeignKey(othermodel<, **options>) #外鍵,關聯其它模型,建立關聯索引
V=models.ManyToManyField(othermodel<, **options>) #多對多,關聯其它模型,建立關聯表
V=models.OneToOneField(othermodel<, parent_link=False, **options>) #一對一,字段關聯表屬性
django 中model 做爲數據資源指定了字段以及一些處理該相應的功能。一般狀況下,每一個model對應數據庫中的一張表 每一個model都是從django.core.meta.Model中派生出來的model中每一個屬性(class attribute)對應着數據庫表中的一個字段非字段信息(Model metadata)在類中被稱做METAField Objects每一個class attributes對應着數據庫中的一個字段,其應該是由meta.Filed的派生的。
from django.core import metaclass Person(meta.Model): first_name = meta.CharField(maxlength=30) last_name = meta.CharFiled("lastname",maxlength=30) 除了 ForeignKey, ManytoManyFiled OneToOneField 使用verbose_name關鍵字之外,第一個可選參數是用來爲字段命名的,若是不設置,系統會自動爲起起名。sites = meta.ManyToManyField(site,verbose_name="list of sites")
Field 選項
null null 缺省設置爲false.一般不將其用於字符型字段上,好比CharField,TextField上.字符型字段若是沒有值會返回空字符串。
blank 該字段是否能夠爲空。若是爲假,則必須有值
choices 一個用來選擇值的2維元組。第一個值是實際存儲的值,第二個用來方便進行選擇。 SEX_CHOICES= (('F','Female'),('M','Male'),) coredb_columndb_index 若是爲真將爲此字段建立索引
default 缺省值
editable 若是爲假,admin模式下將不能改寫。缺省爲真
help_text admin模式下幫助文檔
primary_key 設置主鍵。若是沒有設置django建立表時會自動加上 id = meta.AutoField('ID', primary_key=True) primary_key=True implies blank=False, null=False and unique=True. Only one primary key is allowed on an object. radio_admin 用於admin模式下將select轉換爲radio顯示。只用於ForeignKey或者設置了choices
unique 數據惟一
unique_for_date title = meta.CharField(maxlength=30,unique_for_date='pub_date') 系統將不容許title和pub_date兩個都相同的數據重複出現 unique_for_month / unique_for_year
validator_list 有效性檢查。非有效產生 django.core.validators.ValidationError 錯誤
Field Types
AutoField 自動增加的整型字段。一般無需本身添加
BooleanFieldCharField 對於大量文字應該使用TextField。參數: maxlength
DateField 參數:
auto_now 自動設置爲對象保存時刻的時間。對於相似最後改動之類的應用頗有效
auto_now_add 從最初保存對象至今的增量時間
DateTimeField 同上EmailField 檢查是否爲email的CharField字段
FileField 保存文件的相對路徑名稱 絕對路徑須要在setting中設置 MEDIA_ROOT。對於ImageField設置 MEDIA_URL。 參數upload_to.相對於MEDIA_ROOT目錄的子目錄 經過get_<fieldname>_url獲取絕對路徑
FilePathField 經過給定參數獲取文件列表(我的感受) path 必需要有。 文件系統的絕對路徑 match 可選。一個正則表達式。用來作文件篩選過濾 recursive 可選。True 包含子目錄查找 FilePathField(path="/home/images", match="foo.*" , recursive=True)
FloatField 浮點數字段。兩個必須選項 max_digits 數字最多位數 decimal_places 小數點位置 meta.FloatField(...,max_digits=5,decimal_places=2) /////100.00 ImageField
基本上同FileField.會進行文件格式檢查。兩個額外選項 height_field, width_field 若是設置這兩項,會自動對圖片進行縮放後再保存
需要 python Imaging library
IntegerFieldIPAddressField
"10.1.1.3" NullBooleanField
比BooleanField多了一個NULL狀態 PhoneNumberField
美國格式電話號碼 xxx-xxx-xxxx. CharField PositiveIntegerField
正整數 PositiveSmallIntegerField 一個小的正整數。根據數據庫的設置 SlugField 小片段。
什麼均可以。一般用來存url SlugField 被暗指 maxlength=50 db_index=True
選項: prepopulate_from 一個用來自動生成slug的字段列表 SmallIntegerFieldTextField TimeField
選項: auto-population(可能不對) from DateField and DateTimeField URLField
選項: verify_exists 若是爲True ,系統自動檢查該url是否存在不爲404 USStateField
兩字符美國州簡寫 XMLField 保存xml數據。
選項:schema_path .指定relaxNG格式schema用來檢驗xml合法性
字段列表縱覽表
字段名 |
參數 |
意義 |
AutoField |
一個可以根據可用ID自增的 IntegerField |
|
BooleanField |
一個真/假(true/false)字段 |
|
CharField |
(max_length) |
一個字符串字段,適用於中小長度的字符串。對於長段的文字,請使用 TextField |
CommaSeparatedIntegerField |
(max_length) |
一個用逗號分隔開的整數字段 |
DateField |
([auto_now], [auto_now_add]) |
日期字段 |
DateTimeField |
時間日期字段,接受跟 DateField 同樣的額外選項 |
|
EmailField |
一個能檢查值是不是有效的電子郵件地址的 CharField |
|
FileField |
(upload_to) |
一個文件上傳字段 |
FilePathField |
(path,[match],[recursive]) |
一個擁有若干可選項的字段,選項被限定爲文件系統中某個目錄下的文件名 |
FloatField |
(max_digits,decimal_places) |
一個浮點數,對應Python中的 float 實例 |
ImageField |
(upload_to, [height_field] ,[width_field]) |
像 FileField 同樣,只不過要驗證上傳的對象是一個有效的圖片。 |
IntegerField |
一個整數。 |
|
IPAddressField |
一個IP地址,以字符串格式表示(例如: "24.124.1.30" )。 |
|
NullBooleanField |
就像一個 BooleanField ,但它支持 None /Null 。 |
|
PhoneNumberField |
它是一個 CharField ,而且會檢查值是不是一個合法的美式電話格式 |
|
PositiveIntegerField |
和 IntegerField 相似,但必須是正值。 |
|
PositiveSmallIntegerField |
與 PositiveIntegerField 相似,但只容許小於必定值的值,最大值取決於數據庫. |
|
SlugField |
嵌條 就是一段內容的簡短標籤,這段內容只能包含字母、數字、下 劃線或連字符。一般用於URL中 |
|
SmallIntegerField |
和 IntegerField 相似,可是隻容許在一個數據庫相關的範圍內的數值(一般是-32,768到 +32,767) |
|
TextField |
一個不限長度的文字字段 |
|
TimeField |
時分秒的時間顯示。它接受的可指定參數與 DateField 和 DateTimeField 相同。 |
|
URLField |
用來存儲URL的字段。 |
|
USStateField |
美國州名稱縮寫,兩個字母。 |
|
XMLField |
(schema_path) |
它就是一個 TextField ,只不過要檢查值是匹配指定schema的合法XML。 |
通用字段參數列表(全部的字段類型均可以使用下面的參數,全部的都是可選的。)
參數名 |
意義 |
null |
若是設置爲 True 的話,Django將在數據庫中存儲空值爲 NULL 。默認爲 False 。 |
blank |
若是是 True ,該字段容許留空,默認爲 False 。 |
choices |
一個包含雙元素元組的可迭代的對象,用於給字段提供選項。 |
db_column |
當前字段在數據庫中對應的列的名字。 |
db_index |
若是爲 True ,Django會在建立表格(好比運行 manage.py syncdb )時對這一列建立數據庫索引。 |
default |
字段的默認值 |
editable |
若是爲 False ,這個字段在管理界面或表單裏將不能編輯。默認爲 True 。 |
help_text |
在管理界面表單對象裏顯示在字段下面的額外幫助文本。 |
primary_key |
若是爲 True ,這個字段就會成爲模型的主鍵。 |
radio_admin |
默認地,對於 ForeignKey 或者擁有 choices 設置的字段,Django管理界面會使用列表選擇框(<select>)。若是 radio_admin 設置爲 True 的話,Django就會使用單選按鈕界面。 |
unique |
若是是 True ,這個字段的值在整個表中必須是惟一的。 |
unique_for_date |
把它的值設成一個 DataField 或者 DateTimeField 的字段的名稱,能夠確保字段在這個日期內不會出現重複值。 |
unique_for_month |
和 unique_for_date 相似,只是要求字段在指定字段的月分內惟一。 |
unique_for_year |
和 unique_for_date 及 unique_for_month 相似,只是時間範圍變成了一年。 |
verbose_name |
除 ForeignKey 、 ManyToManyField 和 OneToOneField 以外的字段都接受一個詳細名稱做爲第一個位置參數。 |