亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Django中的AutoField字段使用

瀏覽:124日期:2024-10-05 16:51:01

【Django是一個機智的框架】

默認情況下Djang會為ORM中定義的每一張表加上一個自增ID列,并且用這個列來做主鍵;出于一個MySQL-DBA的工作經歷我覺得

Djanog還真是機智;這樣么說主要是因為我遇到過許多主從延時的問題,有些比較過分的會延時好幾周,通常這些都是因為binlog格式

為“ROW”但是表上不存在主鍵引起的。

如果當前網站用的是Django開發的,我想就不會有這種事情發生了吧。

【AutoField】

Django默認的行為就像這樣

class TestModel(models.Model): id = models.AutoField(primary_key=True)

數據庫層面對應的SQL如下

CREATE TABLE `myapp_testmodel` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

【注意】

如果你想的工增加AutoField列,但是又不指定這個列做為主鍵的話,是會報錯的

class TestModel(models.Model): tid = models.AutoField()

不顯示指定主鍵,但是又給表增加AutoField列的話就會報錯

assert not cls._meta.auto_field, 'Model %s can’t have more than one AutoField.' % cls._meta.labelAssertionError: Model myapp.TestModel can’t have more than one AutoField.

補充知識:Django中models下常用Field以及字段參數

一、常見的FieldType數據庫字段類型

1、AutoField:自增Field域,自動增加的一個數據庫字段類型,例如id字段就可以使用該數據類型,參數中必須填入primary_key=True

2、BigAutoField:和AutoField相同,只是比AutoField要大,參數中必須填入primary_key=True

3、BigIntegerField:大整型,只要用于存儲整型的數據

4、BinaryField:主要是存儲原始的二進制數據

5、BooleanField:主要是存儲布爾類型的數據,0和1

6、CharField:主要存儲字符串的數據類型

7、DateField:主要存儲日期類型的數據類型,日期格式為YYYY-MM-DD

8、DateTimeField:主要存儲時間相關的數據類型,格式為YYYY-MM-DD HH:MM:[ss[.uuuuuu]][TZ]

注意:DateField與DateTimeField有兩個屬性,配置auto_now_add=True,創建數據記錄的時候會把當前時間添加到數據庫,配置auto_now=True,每次更新數據記錄的時候都會更新該字段

9、DecimalField:主要存儲固定精度的十進制數據

--參數:max_digits(小數總長度)/decimal_places(小數位長度)

10、EmailField:存儲電子郵件格式的數據,Django Admin以及ModelForm中提供驗證機制

11、FileField:存儲文件類型的數據,文件上傳到指定目錄

--參數:upload_to='....'(上傳文件的保存路徑)/storage=None(存儲組件,默認django.core.files.storage.FileSystemStorage)

12、FilePathField:存儲文件路徑的數據,提供讀取文件夾下文件的功能

--參數:path(文件夾路徑)/match=None(正則匹配)/recursive=False(遞歸下面的文件夾)/allow_files=True(允許文件)/allow_folders=False(允許文件夾)

13、FloatField:存儲浮點型數據

14、ImageField:存儲圖片型數據,文件上傳到指定目錄

--參數:upload_to='.....'(上傳文件的保存路徑)/storage=None(存儲組件,默認django.core.files.storage.FileSystemStorage)/width_field=None(上傳圖片的寬度保存的數據庫字段名<字符串>)/height_field=None(上傳圖片的高度保存的數據庫字段名<字符串>)

15、IntegerField:存儲整型數據

16、GenericIPAddressField:存儲IP地址信息數據

17、NullBooleanField:可以存儲布爾值數據,也可以存儲空null數據

18、PositiveIntegerField:主要存儲正整數數據

19、SmallIntegerField:小整型,主要用于存儲整型的數據

20、TextField:存儲文章內容信息數據,存儲比較長的文本信息

21、TimeField:存儲時間信息

22、URLField:存儲URL網址信息,Django Admin以及ModelForm中提供驗證url

23、IPAddressField:Django Admin以及ModelForm中提供驗證IPV4機制

24、GenericIPAddressField:Django Admin以及ModelForm中提供驗證IPV4和IPV6機制

二、常用關系型數據表處理Field

1、處理一對多關系數據表:使用ForeignKey

2、處理多對多關系數據表:使用ManyToManyField

三、字段參數

1、null:用于表示某個字段可以為空

2、unique:如果設置為unique=True則該字段在此表中必須是唯一的

3、db_index:如果db_index=True則代表這為此字段設置索引

4、default:為該字段設置默認值

四、關系字段

1、to:設置要關聯的表

2、to_field:設置要關聯的表的字段

3、related_name:反向操作時,使用的字段名,用于代替原反向查詢時的'表名_set'

4、on_delete:當刪除關聯表中的數據時,當前表與其關聯的行的行為,例如刪除一個出版社,那么和這個出版社有關聯的書籍也都被刪除掉了,下面介紹on_delete的參數值:

on_delete=models.CASCADE:刪除關聯數據,與之關聯也刪除

on_delete=models.DO_NOTHING:刪除關聯數據,引發錯誤IntegrityError

on_delete=models.PROTECT:刪除關聯數據,引發錯誤ProtectedError

on_delete=models.SET_NULL:刪除關聯數據,與之關聯的值設置為null(前提FK字段需要設置為可空)

on_delete=models.SET_DEFAULT:刪除關聯數據,與之關聯的值設置為默認值(前提FK字段需要設置默認值)

on_delete=models.SET:刪除關聯數據:

a、與之關聯的值設置為指定值,設置:models.SET(值)

b、與之關聯的值設置為可執行對象的返回值,設置:models.SET(可執行對象)

5、db_constraint:是否在數據庫中創建外鍵約束,默認為True,db_constraint一般使用在建立數據表連接關系當中(例如創建外鍵),如果使用False,則是限制了表之間沒有關聯,達到了軟連接的效果

五、元信息

ORM對應的類里面包含另一個Meta類,而Meta類封裝了一些數據庫的信息,主要字段如下:

1、db_table:ORM在數據庫中的表名默認為app_類名,可以通過db_table可以重寫表名

2、index_together:聯合索引,給兩列做索引

3、unique_together:聯合唯一索引,兩列不能重復

4、ordering:指定默認按什么字段順序,只有設置了該屬性,我們查詢到的結果才可以被reverse()

具體介紹可以查看https://docs.djangoproject.com/en/dev/ref/models/fields/

以上這篇Django中的AutoField字段使用就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: 国产精品日日做人人爱 | 国产精品福利在线观看入口 | 婷婷中文| 91视频免费观看网站 | 朴妮唛19禁福利视频在线 | 韩国xxxx色视频免费 | 成人毛片18女人毛片免费 | 韩日在线 | 日韩精品一区二区三区国语自制 | 成年黄色片 | 免费看一级淫片成人 | 欧美日韩中文字幕一区二区高清 | 国产亚洲欧美在线观看的 | 久久久精品国产免费观看同学 | 免费看香港一级毛片 | 中文字幕午夜乱理片11111 | 久久婷婷伊人 | 国产国语一级a毛片高清视频 | 亚洲欧美影视 | 99精品在线免费 | 911短视频| 91网址免费入口 | 免费在线公开视频 | 热99re久久精品2久久久 | 国产一区亚洲二区 | 尤物视频在线观看网站 | 女同另类一区二区三区 | 99热只有精品一区二区 | 国产在线拍揄自揄视频不卡99 | 欧美一级片网站 | 国产精品久久不卡日韩美女 | 欧美一区二区三区久久综 | 拍拍拍又黄又爽无挡视频免费 | 达达兔午夜起神影院在线观看麻烦 | 啪啪免费看视频 | 国产精品va欧美精品 | 人做人爱全免费视频 | 国产v欧美v日韩在线观看 | 久久精品无遮挡一级毛片 | 台湾亚洲精品一区二区tv | 在线观看国产一区二区三区 |