日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django学习手册 - ORM数据类型

發布時間:2023/12/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。