python-django 模型model字段類型說明

python-django 模型model字段類型說明

 

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 以外的字段都接受一個詳細名稱做爲第一個位置參數。

相關文章
相關標籤/搜索