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