Django模型的Field Types總結

Field Types

常用參數:

null

如果設置爲 True , Django 存放一個 NULL 到數據庫字段。默認爲 False。

blank

如果設置爲 True , 此 field 允許爲 blank (空白),默認爲 False。

choices

一個2元元組的元組或者列表,如果執行 choices , Django 的 admin 就會使用 選擇框而不是標準的 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 的數據,第二個元素是 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

1、AutoField

如果沒有指明主鍵,就會產生一個自增的主鍵。

2、BigIntegerField

64位的整型數值,從 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807)。

3、BinaryField

存儲原始二進制數據,僅支持字節分配。功能有限。

4、BooleanField

布爾型和NullBooleanField有區別,true/false,本類型不允許出現null。

5、CharField

字符串,一般都在創建時寫入max_length參數。

6、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.

7、DateField

時間,對應Python的datetime.date,額外的參數:DateField.auto_now表示是否每次修改時改變時間,DateField.auto_now_add 表示是否創建時表示時間,一般來說數據庫重要的表都要有這樣的字段記錄創建字段時間個最後一次改變的時間。關於時間的話,建議timestamp,當然 python的話還是DateTime吧。

8、DateTimeField

對應Python的datetime.datetime,參照參數(7)。

9、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)

10、EmailField

字符串,會檢查是否是合法的email地址

11、FileField

class FileField([upload_to=None, max_length=100, **options])

存文件的,參數upload_to在1.7之前的一些老版本中必選的

12、FloatField

浮點數,必填參數:max_digits,數字長度;decimal_places,有效位數。

13、ImageField

class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])

圖片文件類型,繼承了FileField的所有屬性和方法。參數除upload_to外,還有height_field,width_field等屬性。

14、IntegerField

[-2147483648,2147483647 ]的取值範圍對Django所支持的數據庫都是安全的。

15、IPAddressField

點分十進制表示的IP地址,如10.0.0.1

16、GenericIPAddressField

ip v4和ip v6地址表示,ipv6遵循RFC 4291section 2.2,

17、NullBooleanField

可以包含空值的布爾類型,相當於設置了null=True的BooleanField。

18、PositiveIntegerField

正整數或0類型,取值範圍爲[0 ,2147483647]

19、PositiveSmallIntegerField

正短整數或0類型,類似於PositiveIntegerField,取值範圍依賴於數據庫特性,[0 ,32767]的取值範圍對Django所支持的數據庫都是安全的。

20、SlugField

只能包含字母,數字,下劃線和連字符的字符串,通常被用於URLs表示。可選參數max_length=50,prepopulate_from用於指示在admin表單中的可選值。db_index,默認爲True。

21、SmallIntegerField

小整數字段,類似於IntegerField,取值範圍依賴於數據庫特性,[-32768 ,32767]的取值範圍對Django所支持的數據庫都是安全的。

22、TextField

文本類型

23、TimeField

時間,對應Python的datetime.time

24、URLField

存儲URL的字符串,默認長度200;verify_exists(True),檢查URL可用性。

25、FilePathField

class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])

類似於CharField,但是取值被限制爲指定路徑內的文件名,path參數是必選的。

 

參考資料:

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField

http://jianlee.ylinux.org/Computer/Python/django_models.html

http://luo3380.blog.163.com/blog/static/12043208620131139254121/

http://www.zijin5.com/django-model-yi/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章