Django模型的Field Types總結(jié)

Field Types
常用參數(shù):
null
如果設(shè)置為 True , Django 存放一個 NULL 到數(shù)據(jù)庫字段蜓陌。默認(rèn)為 False膊爪。
blank
如果設(shè)置為 True , 此 field 允許為 blank (空白),默認(rèn)為 False瘪校。
choices
一個2元元組的元組或者列表,如果執(zhí)行 choices , Django 的 admin 就會使用 選擇框而不是標(biāo)準(zhǔn)的 text 框填寫這個 field舌镶。

YEAR_IN_SCHOOL_CHOICES = (
    (u'FR', u'Freshman'),
    (u'SO', u'Sophomore'),
    (u'JR', u'Junior'),
    (u'SR', u'Senior'),
    (u'GR', u'Graduate'),
)

2元元組的第一個元素是要存入 database 的數(shù)據(jù),第二個元素是 admin 的界面 顯示的數(shù)據(jù)豪娜。
使用了 choices 參數(shù)的 field 在其 model 示例里乎折,可以用 "get_field的名 字_display" 方法 顯示 choices 的顯示字串(就是2元元組的第二個數(shù)據(jù))。示 例:

from django.db import models

class Person(models.Model):
    GENDER_CHOICES = (
        (u'M', u'Male'),
        (u'F', u'Female'),
    )
    name = models.CharField(max_length=60)
    gender = models.CharField(max_length=2, choices=GENDER_CHOICES)
>>> p = Person(name="Fred Flinstone", gender="M")
>>> p.save()
>>> p.gender
u'M'
>>> p.get_gender_display()
u'Male'

default
field 的默認(rèn)值侵歇,可以使用可調(diào)用對象(a callable object)骂澄,如果使用可調(diào)用 對象,那么每次創(chuàng)建此 model 的新對象時調(diào)用可調(diào)用對象惕虑。常見如 datatime 坟冲。
help_text
help_text 的值可以在 admin form 里顯示,不過即使不使用 admin 溃蔫,也可以當(dāng) 做描述文檔使用健提。
primary_key
如果為 True , 這個 field 就是此 model 的 primary key 伟叛。
unique
如果為 True私痹, 此 field 在這個 table 里必須唯一。
verbose_name
verbose统刮,詳細的意思紊遵。verbose_name,就可以理解為詳細的名字吧侥蒙。
除了ForeignKey, ManyToManyField 和 OneToOneField之外暗膜,每個類型的字段都有一個可選的第一位置參數(shù)-詳細的名字。如果沒有給出詳細的名稱鞭衩,Django將自動使用字段的屬性名來代替他学搜。替代過程中會轉(zhuǎn)換下劃線為空格。
該字段中论衍,名字的詳情為”person’s first name”:
first_name = models.CharField("person's first name", max_length=30)

以下字段中瑞佩,first_name的詳細名字為"first name":
first_name = models.CharField(max_length=30)

ForeignKey, ManyToManyField 和 OneToOneField要求第一個參數(shù)是模型的類,所以需要使用verbose_name關(guān)鍵字參數(shù)坯台,如:
poll = models.ForeignKey(Poll, verbose_name="the related poll")
sites = models.ManyToManyField(Site, verbose_name="list of sites")
place = models.OneToOneField(Place, verbose_name="related place")

在需要的時候Django會自動大寫 verbose_name的首字母炬丸。
原來verbose_name字段就是為ForeignKey, ManyToManyField 和 OneToOneField這三種關(guān)系準(zhǔn)備的啊捂人!

常見Filed Types

1御雕、AutoField
如果沒有指明主鍵矢沿,就會產(chǎn)生一個自增的主鍵。
2酸纲、BigIntegerField
64位的整型數(shù)值捣鲸,從 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807)。
3闽坡、BinaryField
存儲原始二進制數(shù)據(jù)栽惶,僅支持字節(jié)分配。功能有限疾嗅。
4外厂、BooleanField
布爾型和NullBooleanField有區(qū)別,true/false代承,本類型不允許出現(xiàn)null汁蝶。
5、CharField字符串论悴,一般都在創(chuàng)建時寫入max_length參數(shù)掖棉。
6、CommaSeparatedIntegerField
逗號分隔的整數(shù)膀估,考慮到數(shù)據(jù)庫的移植性幔亥,max_length參數(shù)應(yīng)該必選。
原文解釋:A field of integers separated by commas. As in CharField, the max_length argument is required and the note about database portability mentioned there should be heeded.
7察纯、DateField
時間帕棉,對應(yīng)Python的datetime.date,額外的參數(shù):DateField.auto_now表示是否每次修改時改變時間饼记,DateField.auto_now_add 表示是否創(chuàng)建時表示時間香伴,一般來說數(shù)據(jù)庫重要的表都要有這樣的字段記錄創(chuàng)建字段時間個最后一次改變的時間。關(guān)于時間的話握恳,建議timestamp瞒窒,當(dāng)然 python的話還是DateTime吧。
8乡洼、DateTimeField
對應(yīng)Python的datetime.datetime,參照參數(shù)(7)匕坯。
9束昵、DecimalField
固定精度的十進制數(shù),一般用來存金額相關(guān)的數(shù)據(jù)葛峻。對應(yīng)python的Decimal锹雏,額外的參數(shù)包括DecimalField.max_digits和DecimalField.decimal_places ,這個還是要參照一下mysql的Decimal類型术奖,http://database.51cto.com/art/201005/201651.htm
例如:price = models.DecimalField(max_digits=8,decimal_places=2)
10礁遵、EmailField
字符串轻绞,會檢查是否是合法的email地址
11、FileField
class FileField([upload_to=None, max_length=100, **options])
存文件的佣耐,參數(shù)upload_to在1.7之前的一些老版本中必選的
12政勃、FloatField
浮點數(shù),必填參數(shù):max_digits兼砖,數(shù)字長度奸远;decimal_places,有效位數(shù)讽挟。
13懒叛、ImageField
class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])
圖片文件類型,繼承了FileField的所有屬性和方法耽梅。參數(shù)除upload_to外薛窥,還有height_field,width_field等屬性眼姐。
14拆檬、IntegerField
[-2147483648,2147483647 ]的取值范圍對Django所支持的數(shù)據(jù)庫都是安全的。
15妥凳、IPAddressField
點分十進制表示的IP地址竟贯,如10.0.0.1
16、GenericIPAddressField
ip v4和ip v6地址表示逝钥,ipv6遵循RFC 4291section 2.2,
17屑那、NullBooleanField
可以包含空值的布爾類型,相當(dāng)于設(shè)置了null=True的BooleanField艘款。
18持际、PositiveIntegerField
正整數(shù)或0類型,取值范圍為[0 ,2147483647]
19哗咆、PositiveSmallIntegerField
正短整數(shù)或0類型蜘欲,類似于PositiveIntegerField,取值范圍依賴于數(shù)據(jù)庫特性晌柬,[0 ,32767]的取值范圍對Django所支持的數(shù)據(jù)庫都是安全的姥份。
20、SlugField
只能包含字母年碘,數(shù)字澈歉,下劃線和連字符的字符串,通常被用于URLs表示屿衅“D眩可選參數(shù)max_length=50,prepopulate_from用于指示在admin表單中的可選值。db_index涡尘,默認(rèn)為True忍弛。
21、SmallIntegerField
小整數(shù)字段考抄,類似于IntegerField细疚,取值范圍依賴于數(shù)據(jù)庫特性,[-32768 ,32767]的取值范圍對Django所支持的數(shù)據(jù)庫都是安全的座泳。
22惠昔、TextField
文本類型
23、TimeField
時間挑势,對應(yīng)Python的datetime.time
24镇防、URLField
存儲URL的字符串,默認(rèn)長度200潮饱;verify_exists(True)来氧,檢查URL可用性。
25香拉、FilePathField

class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])
類似于CharField啦扬,但是取值被限制為指定路徑內(nèi)的文件名,path參數(shù)是必選的凫碌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扑毡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子盛险,更是在濱河造成了極大的恐慌瞄摊,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苦掘,死亡現(xiàn)場離奇詭異换帜,居然都是意外死亡,警方通過查閱死者的電腦和手機鹤啡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門惯驼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人递瑰,你說我怎么就攤上這事祟牲。” “怎么了泣矛?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵疲眷,是天一觀的道長。 經(jīng)常有香客問我您朽,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任哗总,我火速辦了婚禮几颜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讯屈。我一直安慰自己蛋哭,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布涮母。 她就那樣靜靜地躺著谆趾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪叛本。 梳的紋絲不亂的頭發(fā)上沪蓬,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音来候,去河邊找鬼跷叉。 笑死,一個胖子當(dāng)著我的面吹牛营搅,可吹牛的內(nèi)容都是我干的云挟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼转质,長吁一口氣:“原來是場噩夢啊……” “哼园欣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起休蟹,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沸枯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸡挠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辉饱,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年拣展,在試婚紗的時候發(fā)現(xiàn)自己被綠了彭沼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡备埃,死狀恐怖姓惑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情按脚,我是刑警寧澤于毙,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站辅搬,受9級特大地震影響唯沮,放射性物質(zhì)發(fā)生泄漏脖旱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一介蛉、第九天 我趴在偏房一處隱蔽的房頂上張望萌庆。 院中可真熱鬧,春花似錦币旧、人聲如沸践险。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巍虫。三九已至,卻和暖如春鳍刷,著一層夾襖步出監(jiān)牢的瞬間占遥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工倾剿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留筷频,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓前痘,卻偏偏與公主長得像凛捏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子芹缔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容