Django模型的Field Types總結

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參數是必選的。

相關文章
相關標籤/搜索