Django学习手册 - ORM数据类型
生活随笔
收集整理的這篇文章主要介紹了
Django学习手册 - ORM数据类型
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
DOM 字段/參數(shù)
配置格式:
Module.字段(參數(shù))
?
常用的字段歸納:
數(shù)字
models.AutoField() 自增列(int),必須設(shè)置為主鍵 models.IntegerField() 整型 models.FloatField() 浮點(diǎn) models.DecimalField(max_digits=8,decimal_places=3) 精確浮點(diǎn)?
字符串
models.CharField() 字符串,必須設(shè)置max_length 參數(shù) models.TextField(Field) 文本類型?
時(shí)間
models.DateField() models.DateTimeField()參數(shù): Auto_now #現(xiàn)在時(shí)間(更新時(shí)間) Auto_now_add #創(chuàng)建時(shí)間 注:(更新時(shí)間使用) 更新方式一: Obj = userinfo.objects.filter(id=1).update(name=”root”) 不生效更新方式二: Obj = userinfo.objects.filter(id=1).first() Obj.save() 生效?
其他
Models.BinaryField() 二進(jìn)制 Models.ImageField() 圖片 Models.FilePathField() 文件?
常用屬性參數(shù):
Null 是否為空(T,F) Default 默認(rèn)參數(shù) Primary_key 主鍵 Db_index 索引 Unique 唯一索引 Verbose_name 顯示字段中文 choices ->作用:1.在Django admin中顯示下拉框,如下截圖;2,避免連表查詢,連表查詢的效率非常低。 blank ->在Django admin中是否可以為空。null指的是在數(shù)據(jù)庫(kù)中是否可以為空。 verbose_name ->在Django admin中顯示字段中文。 editable ->在Django admin中是否可以被編輯。 error_messages ->在Django admin中顯示的錯(cuò)誤信息 helt_text ->在Django admin中顯示提示信息 validators ->在Django form,自定義錯(cuò)誤信息。?
?
在Django admin中生效的字段:
Emailfield () GenericIPAddressField() URLField() EmailField(CharField) IPAddressField(Field) URLField(CharField) SlugField(CharField) UUIDField(Field)FilePathField(Field)參數(shù):path, 文件夾路徑match=None, 正則匹配recursive=False, 遞歸下面的文件夾allow_files=True, 允許文件allow_folders=False, 允許文件夾FileField(Field)參數(shù):upload_to = "" 上傳文件的保存路徑storage = None 存儲(chǔ)組件,默認(rèn)django.core.files.storage.FileSystemStorage
ImageField(FileField) CommaSeparatedIntegerField(CharField)格式必須為逗號(hào)分割的數(shù)字拓展: models.CharField ?對(duì)應(yīng)的是MySQL的varchar數(shù)據(jù)類型
char 和 varchar的區(qū)別 : char和varchar的共同點(diǎn)是存儲(chǔ)數(shù)據(jù)的長(zhǎng)度,不能 超過(guò)max_length限制, 不同點(diǎn)是varchar根據(jù)數(shù)據(jù)實(shí)際長(zhǎng)度存儲(chǔ),char按指定max_length()存儲(chǔ)數(shù)據(jù);所有前者更節(jié)省硬盤(pán)空間;
返回值為字段在數(shù)據(jù)庫(kù)中的屬性,Django字段默認(rèn)的值為:
'AutoField': 'integer AUTO_INCREMENT','BigAutoField': 'bigint AUTO_INCREMENT','BinaryField': 'longblob','BooleanField': 'bool','CharField': 'varchar(%(max_length)s)','CommaSeparatedIntegerField': 'varchar(%(max_length)s)','DateField': 'date','DateTimeField': 'datetime','DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)','DurationField': 'bigint','FileField': 'varchar(%(max_length)s)','FilePathField': 'varchar(%(max_length)s)','FloatField': 'double precision','IntegerField': 'integer','BigIntegerField': 'bigint','IPAddressField': 'char(15)','GenericIPAddressField': 'char(39)','NullBooleanField': 'bool','OneToOneField': 'integer','PositiveIntegerField': 'integer UNSIGNED','PositiveSmallIntegerField': 'smallint UNSIGNED','SlugField': 'varchar(%(max_length)s)','SmallIntegerField': 'smallint','TextField': 'longtext','TimeField': 'time','UUIDField': 'char(32)', ?
聯(lián)合索引設(shè)置
在Django model中對(duì)一張表的幾個(gè)字段進(jìn)行聯(lián)合約束和聯(lián)合索引,例如在購(gòu)物車(chē)表中,登錄的用戶和商品兩個(gè)字段在一起表示唯一記錄。
class Cart(models.Model):user = models.ForeignKey(MyUser,verbose_name="用戶")goods = models.ForeignKey(Goods,verbose_name="商品")num = models.IntegerField(verbose_name="商品數(shù)量")is_select = models.BooleanField(default=True,verbose_name="選中狀態(tài)")class Meta:# 聯(lián)合約束 其中g(shù)oods和user不能重復(fù)unique_together = ["goods", "user"]# 聯(lián)合索引index_together = ["user", "goods"]unique_together = ["goods", "user"]? 表示聯(lián)合約束,其中"goods"和"user"表示不能重復(fù),不能一樣。
index_together = ["user", "goods"] 表示聯(lián)合索引,其中"goods"和"user"聯(lián)合同步查詢,提高效率。
?
轉(zhuǎn)載于:https://www.cnblogs.com/Anec/p/9526783.html
總結(jié)
以上是生活随笔為你收集整理的Django学习手册 - ORM数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: POJ-1325 Machine Sch
- 下一篇: grunt之Gruntfile(1)