django model常用字段類型


摘自 http://www.cnblogs.com/wt869054461/p/4014271.html

 

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>)    #一對一,字段關聯表屬性

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM