以下內(nèi)容據(jù)轉(zhuǎn)載自小鄭鄭要飛飛的專(zhuān)欄,僅用于學(xué)習(xí)和交流使用,如有侵權(quán)立即刪除。
orm設(shè)置數(shù)據(jù)庫(kù)結(jié)構(gòu)
- 創(chuàng)建數(shù)據(jù)庫(kù)結(jié)構(gòu)
1、models.AutoField 自增列 = int(11)
如果沒(méi)有的話,默認(rèn)會(huì)生成一個(gè)名稱(chēng)為 id 的列,如果要顯示的自定義一個(gè)自增列,必須將給列設(shè)置為主鍵 primary_key=True。
2、models.CharField 字符串字段
必須 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
對(duì)于參數(shù),auto_now = True 則每次更新都會(huì)更新這個(gè)時(shí)間;auto_now_add 則只是第一次創(chuàng)建添加,之后的更新不再改變。
6、models.DateTimeField 日期類(lèi)型 datetime
同DateField的參數(shù)
7、models.Decimal 十進(jìn)制小數(shù)類(lèi)型 = decimal
必須指定整數(shù)位max_digits和小數(shù)位decimal_places
8、models.EmailField 字符串類(lèi)型(正則表達(dá)式郵箱) =varchar
對(duì)字符串進(jìn)行正則表達(dá)式
9、models.FloatField 浮點(diǎn)類(lèi)型 = double
10、models.IntegerField 整形
11、models.BigIntegerField 長(zhǎng)整形
integer_field_ranges = {
'SmallIntegerField': (-32768, 32767),
'IntegerField': (-2147483648, 2147483647),
'BigIntegerField': (-9223372036854775808, 9223372036854775807),
'PositiveSmallIntegerField': (0, 32767),
'PositiveIntegerField': (0, 2147483647),
}
12、models.IPAddressField 字符串類(lèi)型(ip4正則表達(dá)式)
13、models.GenericIPAddressField 字符串類(lèi)型(ip4和ip6是可選的)
參數(shù)protocol可以是:both、ipv4、ipv6
驗(yàn)證時(shí),會(huì)根據(jù)設(shè)置報(bào)錯(cuò)
14、models.NullBooleanField 允許為空的布爾類(lèi)型
15、models.PositiveIntegerFiel 正Integer
16、models.PositiveSmallIntegerField 正smallInteger
17、models.SlugField 減號(hào)、下劃線、字母、數(shù)字
18、models.SmallIntegerField 數(shù)字
數(shù)據(jù)庫(kù)中的字段有:tinyint、smallint、int、bigint
19、models.TextField 字符串=longtext
20、models.TimeField 時(shí)間 HH:MM[:ss[.uuuuuu]]
21、models.URLField 字符串,地址正則表達(dá)式
22、models.BinaryField 二進(jìn)制
23、models.ImageField 圖片
24、models.FilePathField 文件
外鍵: Color = models.ForeignKey(ColorDic)一對(duì)一:
authors = models.OneToOneField(OneModel)
多對(duì)多:authors = models.ManyToManyField(Author)
中文的轉(zhuǎn)換:
def __str__(self): # 低版本使用__unicode__
return self.name
參數(shù):
1.null=True
數(shù)據(jù)庫(kù)中字段是否可以為空
2.blank=True
django的admin中添加數(shù)據(jù)時(shí)候是否可以為空
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
GENDER_CHOICE=(
(u'M',u'Male'),
(u'F',u'Female'),
)
6.max_length
7.default 默認(rèn)值
8.verbose_name Admin中字段的顯示名稱(chēng)
9.name|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=[]
17.upload-to
執(zhí)行SQL
增加:創(chuàng)建實(shí)例,并調(diào)用save
更新:a.獲取實(shí)例,再sava;b.update(指定列)
刪除:a. filter().delete(); b.all().delete()
獲取:a. 單個(gè)=get(id=1) ;b. 所有 = all()
過(guò)濾:filter(name='xxx');filter(name__contains='');(id__in = [1,2,3]) ; icontains (大小寫(xiě)無(wú)關(guān)的 LIKE ), startswith 和 endswith , 還有 range (SQL BETWEEN 查詢)
'gt', 'in', 'isnull', 'endswith', 'contains', 'lt', 'startswith', 'iendswith', 'icontains','range', 'istartswith'
排序:order_by("name") =asc ;order_by("-name")=desc
默認(rèn)排序:class Meta: ordering = ['name']
返回第n-m條:第n條[0];前兩條[0:2]
指定映射:values
數(shù)量:count()
聚合:from django.db.models import Min,Max,Sum objects.all().aggregate(Max('guest_id'))