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ù)是必選的凫碌。