1鼻种、models.AutoField
自增列 = int(11)
如果沒(méi)有的話,默認(rèn)會(huì)生成一個(gè)名稱(chēng)為 id 的列
如果要顯式的自定義一個(gè)自增列篙贸,必須設(shè)置primary_key=True枫疆。
2、models.CharField
字符串字段
必須設(shè)置max_length參數(shù)
3寝贡、models.BooleanField
布爾類(lèi)型=tinyint(1)
不能為空值依,可添加Blank=True
4鳞滨、models.ComaSeparatedIntegerField
用逗號(hào)分割的數(shù)字=varchar
繼承CharField蟆淀,所以必須 max_lenght 參數(shù)
5熔任、models.DateField
日期類(lèi)型 date
DateField.auto_now:保存時(shí)自動(dòng)設(shè)置該字段為現(xiàn)在日期,最后修改日期
DateField.auto_now_add:當(dāng)該對(duì)象第一次被創(chuàng)建是自動(dòng)設(shè)置該字段為現(xiàn)在日期甫匹,創(chuàng)建日期惦费。
6、models.DateTimeField
日期時(shí)間類(lèi)型 datetime
同DateField的參數(shù)
7恍箭、models.Decimal
十進(jìn)制小數(shù)類(lèi)型 = decimal
DecimalField.max_digits:數(shù)字中允許的最大位數(shù)
DecimalField.decimal_places:存儲(chǔ)的十進(jìn)制位數(shù)
8扯夭、models.EmailField
一個(gè)帶有檢查 Email 合法性的 CharField
9鞍匾、models.FloatField
浮點(diǎn)類(lèi)型 = double
10、models.IntegerField
整形
11构拳、models.BigIntegerField
長(zhǎng)整形
integer_field_ranges = {undefined
‘SmallIntegerField’: (-32768, 32767),
‘IntegerField’: (-2147483648, 2147483647),
‘BigIntegerField’: (-9223372036854775808, 9223372036854775807),
‘PositiveSmallIntegerField’: (0, 32767),
‘PositiveIntegerField’: (0, 2147483647),
}
12隐圾、models.GenericIPAddressField
一個(gè)帶有檢查 IP地址合法性的 CharField
13、models.NullBooleanField
允許為空的布爾類(lèi)型
14蜜笤、models.PositiveIntegerFiel
正整數(shù)
15盐碱、models.PositiveSmallIntegerField
正smallInteger
16瓮顽、models.SlugField
減號(hào)、下劃線缕贡、字母拣播、數(shù)字
17贮配、models.SmallIntegerField
數(shù)字
數(shù)據(jù)庫(kù)中的字段有:tinyint、smallint昼蛀、int圆存、bigint
18、models.TextField
大文本送淆。默認(rèn)對(duì)應(yīng)的form標(biāo)簽是textarea偷崩。
19撞羽、models.TimeField
時(shí)間 HH:MM[:ss[.uuuuuu]]
20、models.URLField
一個(gè)帶有URL合法性校驗(yàn)的CharField谒出。
21笤喳、models.BinaryField
二進(jìn)制
存儲(chǔ)二進(jìn)制數(shù)據(jù)。不能使用filter函數(shù)獲得QuerySet蒙畴。
22呜象、models.ImageField
圖片
ImageField.height_field恭陡、ImageField.width_field:如果提供這兩個(gè)參數(shù),則圖片將按提供的高度和寬度規(guī)格保存著淆。
該字段要求 Python Imaging 庫(kù)Pillow拴疤。
會(huì)檢查上傳的對(duì)象是否是一個(gè)合法圖片。
23、models.FileField(upload_to=None[, max_length=100, ** options])
文件
FileField.upload_to:一個(gè)用于保存上傳文件的本地文件系統(tǒng)路徑凫佛,該路徑由 MEDIA_ROOT 中設(shè)置
這個(gè)字段不能設(shè)置primary_key和unique選項(xiàng).在數(shù)據(jù)庫(kù)中存儲(chǔ)類(lèi)型是varchar愧薛,默認(rèn)最大長(zhǎng)度為100
24衫画、models.FilePathField(path=None[, math=None, recursive=False, max_length=100, **options])
FilePathField.path:文件的絕對(duì)路徑削罩,必填
FilePathField.match:用于過(guò)濾路徑下文件名的正則表達(dá)式,該表達(dá)式將用在文件名上(不包括路徑)进陡。
FilePathField.recursive:True 或 False微服,默認(rèn)為 False,指定是否應(yīng)包括所有子目錄的路徑糙麦。
例如:FilePathField(path="/home/images", match=“foo.*”, recursive=True)
將匹配“/home/images/foo.gif”但不匹配“/home/images/foo/bar.gif”
2. django 模型models 字段常用參數(shù)
1赡磅、null
如果是True,Django會(huì)在數(shù)據(jù)庫(kù)中將此字段的值置為NULL鲜滩,默認(rèn)值是False
2徙硅、blank
如果為T(mén)rue時(shí)django的 Admin 中添加數(shù)據(jù)時(shí)可允許空值搞疗,可以不填匿乃。如果為False則必須填。默認(rèn)是False泄隔。
null純粹是與數(shù)據(jù)庫(kù)有關(guān)系的宛徊。而blank是與頁(yè)面必填項(xiàng)驗(yàn)證有關(guān)的
3闸天、primary_key = False
主鍵,對(duì)AutoField設(shè)置主鍵后湾揽,就會(huì)代替原來(lái)的自增 id 列
4笼吟、auto_now 和 auto_now_add
auto_now 自動(dòng)創(chuàng)建—無(wú)論添加或修改贷帮,都是當(dāng)前操作的時(shí)間
auto_now_add 自動(dòng)創(chuàng)建—永遠(yuǎn)是創(chuàng)建時(shí)的時(shí)間
5皿桑、choices
一個(gè)二維的元組被用作choices蔬啡,如果這樣定義镀虐,Django會(huì)select box代替普通的文本框刮便,
并且限定choices的值是元組中的值
GENDER_CHOICE = (
(u’M’, u’Male’),
(u’F’, u’Female’),
)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
6恨旱、max_length
字段長(zhǎng)度
7、default
默認(rèn)值
8谆沃、verbose_name
Admin中字段的顯示名稱(chēng)仪芒,如果不設(shè)置該參數(shù)時(shí)掂名,則與屬性名。
9锌介、db_column
數(shù)據(jù)庫(kù)中的字段名稱(chēng)
10孔祸、unique=True
不允許重復(fù)
11肿嘲、db_index = True
數(shù)據(jù)庫(kù)索引
12筑公、editable=True
在Admin里是否可編輯
13匣屡、error_messages=None
錯(cuò)誤提示
14、auto_created=False
自動(dòng)創(chuàng)建
15誉结、help_text
在Admin中提示幫助信息
16惩坑、validators=[]
驗(yàn)證器
17、upload-to
文件上傳時(shí)的保存上傳文件的目錄
models.py
# -- coding: utf-8 --
from?future?import unicode_literals
from django.db import models
class UserInfo(models.Model):
userName = models.CharField(max_length=30) #用戶名
passWord = models.CharField(max_length=30) #密碼
gendle = models.BooleanField() #性別
birthday = models.DateField() #出生日期
weigth = models.FloatField() #體重
heigth = models.IntegerField() #身高
email = models.EmailField() #郵箱
host = models.GenericIPAddressField() #IP地址
introduce = models.TextField() #個(gè)人簡(jiǎn)介
blog = models.URLField() #博客地址
photo = models.ImageField() #照片
CV = models.FilePathField() #個(gè)人簡(jiǎn)歷文件
createDate = models.DateTimeField() #帳號(hào)申請(qǐng)時(shí)間
執(zhí)行結(jié)果:
ERRORS:
web.UserInfo.photo: (fields.E210) Cannot use ImageField because Pillow is not installed.
HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command “pip install Pillow”.
原因:
這是因?yàn)槭褂昧薎mageField()字段,該字段是直接在數(shù)據(jù)庫(kù)中存儲(chǔ)圖片的永票,數(shù)據(jù)庫(kù)中實(shí)際存儲(chǔ)時(shí)要使用python的Pillow模塊對(duì)圖片進(jìn)行處理后才能存儲(chǔ)進(jìn)去滥沫。因此因需使用pip install Pillow 安裝該模塊即可解決該報(bào)錯(cuò)侣集。
2)
ERRORS:
在執(zhí)行python manage.py makemigrations 時(shí)需要手動(dòng)選擇處理方法:
You are trying to add a non-nullable field ‘CV’ to userinfo without a default; we can’t do that (the database needs something to populate existing rows).
Please select a fix:
Provide a one-off default now (will be set on all existing rows with a null value for this column)
Quit, and let me add a default in models.py
Select an option: 1
Please enter the default value now, as valid Python
The datetime and django.utils.timezone modules are available, so you can do e.g. timezone.now
Type ‘exit’ to exit this prompt
timezone.now
原因:
這是因?yàn)閁serInfo數(shù)據(jù)表中已經(jīng)有了"userName"和"passWord" 這兩個(gè)字段,當(dāng)在新增字段時(shí)就會(huì)出現(xiàn)這種Warning兰绣。是由于django框架在生成SQL語(yǔ)句時(shí)發(fā)現(xiàn)數(shù)據(jù)表不為空世分,擔(dān)心新增不為Null的字段添加到該表中時(shí),表中以前的數(shù)據(jù)行在填充這些字段時(shí)需要填充的值不明確狭魂,所以才會(huì)詢問(wèn)用戶處理方式罚攀。
選1,則會(huì)在已存在行中添加null,選2雌澄,則會(huì)要求在models.py中添加默認(rèn)值斋泄。
在models.py中設(shè)置默認(rèn)值的方法:
host = models.GenericIPAddressField(default = ‘127.0.0.1’)
執(zhí)行python makemigrations正常,但是執(zhí)行python migrate 報(bào)錯(cuò)炫掐,之后再執(zhí)行無(wú)法生效的處理辦法