Field Typespython
經常使用參數:mysql
nullgit
若是設置爲 True , Django 存放一個 NULL 到數據庫字段。默認爲 False。sql
blank數據庫
若是設置爲 True , 此 field 容許爲 blank (空白),默認爲 False。django
choices安全
一個2元元組的元組或者列表,若是執行 choices , Django 的 admin 就會使用 選擇框而不是標準的 text 框填寫這個 field。ui
YEAR_IN_SCHOOL_CHOICES = (spa (u'FR', u'Freshman'),orm (u'SO', u'Sophomore'), (u'JR', u'Junior'), (u'SR', u'Senior'), (u'GR', u'Graduate'), ) |
2元元組的第一個元素是要存入 database 的數據,第二個元素是 admin 的界面 顯示的數據。
使用了 choices 參數的 field 在其 model 示例裏,能夠用 "get_field的名 字_display" 方法 顯示 choices 的顯示字串(就是2元元組的第二個數據)。示 例:
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 的默認值,可使用可調用對象(a callable object),若是使用可調用 對象,那麼每次建立此 model 的新對象時調用可調用對象。常見如 datatime 。
help_text
help_text 的值能夠在 admin form 裏顯示,不過即便不使用 admin ,也能夠當 作描述文檔使用。
primary_key
若是爲 True , 這個 field 就是此 model 的 primary key 。
unique
若是爲 True, 此 field 在這個 table 裏必須惟一。
verbose_name
verbose,詳細的意思。verbose_name,就能夠理解爲詳細的名字吧。
除了ForeignKey, ManyToManyField 和 OneToOneField以外,每一個類型的字段都有一個可選的第一位置參數-詳細的名字。若是沒有給出詳細的名稱,Django將自動使用字段的屬性名來代替他。替代過程當中會轉換下劃線爲空格。
該字段中,名字的詳情爲」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要求第一個參數是模型的類,因此須要使用verbose_name關鍵字參數,如:
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這三種關係準備的啊!
常見Filed Types
一、AutoField
若是沒有指明主鍵,就會產生一個自增的主鍵。
二、BigIntegerField
64位的整型數值,從 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807)。
三、BinaryField
存儲原始二進制數據,僅支持字節分配。功能有限。
四、BooleanField
布爾型和NullBooleanField有區別,true/false,本類型不容許出現null。
五、CharField
字符串,通常都在建立時寫入max_length參數。
六、CommaSeparatedIntegerField
逗號分隔的整數,考慮到數據庫的移植性,max_length參數應該必選。
原文解釋: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.
七、DateField
時間,對應Python的datetime.date,額外的參數:DateField.auto_now表示是否每次修改時改變時間,DateField.auto_now_add 表示是否建立時表示時間,通常來講數據庫重要的表都要有這樣的字段記錄建立字段時間個最後一次改變的時間。關於時間的話,建議timestamp,固然 python的話仍是DateTime吧。
八、DateTimeField
對應Python的datetime.datetime,參照參數(7)。
九、DecimalField
固定精度的十進制數,通常用來存金額相關的數據。對應python的Decimal,額外的參數包括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)
十、EmailField
字符串,會檢查是不是合法的email地址
十一、FileField
class FileField([upload_to=None, max_length=100, **options])
存文件的,參數upload_to在1.7以前的一些老版本中必選的
十二、FloatField
浮點數,必填參數:max_digits,數字長度;decimal_places,有效位數。
1三、ImageField
class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])
圖片文件類型,繼承了FileField的全部屬性和方法。參數除upload_to外,還有height_field,width_field等屬性。
1四、IntegerField
[-2147483648,2147483647 ]的取值範圍對Django所支持的數據庫都是安全的。
1五、IPAddressField
點分十進制表示的IP地址,如10.0.0.1
1六、GenericIPAddressField
ip v4和ip v6地址表示,ipv6遵循RFC 4291section 2.2,
1七、NullBooleanField
能夠包含空值的布爾類型,至關於設置了null=True的BooleanField。
1八、PositiveIntegerField
正整數或0類型,取值範圍爲[0 ,2147483647]
1九、PositiveSmallIntegerField
正短整數或0類型,相似於PositiveIntegerField,取值範圍依賴於數據庫特性,[0 ,32767]的取值範圍對Django所支持的數據庫都是安全的。
20、SlugField
只能包含字母,數字,下劃線和連字符的字符串,一般被用於URLs表示。可選參數max_length=50,prepopulate_from用於指示在admin表單中的可選值。db_index,默認爲True。
2一、SmallIntegerField
小整數字段,相似於IntegerField,取值範圍依賴於數據庫特性,[-32768 ,32767]的取值範圍對Django所支持的數據庫都是安全的。
2二、TextField
文本類型
2三、TimeField
時間,對應Python的datetime.time
2四、URLField
存儲URL的字符串,默認長度200;verify_exists(True),檢查URL可用性。
2五、FilePathField
class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])
相似於CharField,可是取值被限制爲指定路徑內的文件名,path參數是必選的。