最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django中的AutoField字段使用

 更新時(shí)間:2020年05月18日 09:38:39   作者:weixin_34013044  
這篇文章主要介紹了Django中的AutoField字段使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

【Django是一個(gè)機(jī)智的框架】

默認(rèn)情況下Djang會(huì)為ORM中定義的每一張表加上一個(gè)自增ID列,并且用這個(gè)列來(lái)做主鍵;出于一個(gè)MySQL-DBA的工作經(jīng)歷我覺(jué)得

Djanog還真是機(jī)智;這樣么說(shuō)主要是因?yàn)槲矣龅竭^(guò)許多主從延時(shí)的問(wèn)題,有些比較過(guò)分的會(huì)延時(shí)好幾周,通常這些都是因?yàn)閎inlog格式

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

如果當(dāng)前網(wǎng)站用的是Django開(kāi)發(fā)的,我想就不會(huì)有這種事情發(fā)生了吧。

【AutoField】

Django默認(rèn)的行為就像這樣

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

數(shù)據(jù)庫(kù)層面對(duì)應(yīng)的SQL如下

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

【注意】

如果你想的工增加AutoField列,但是又不指定這個(gè)列做為主鍵的話,是會(huì)報(bào)錯(cuò)的

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

不顯示指定主鍵,但是又給表增加AutoField列的話就會(huì)報(bào)錯(cuò)

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

補(bǔ)充知識(shí):Django中models下常用Field以及字段參數(shù)

一、常見(jiàn)的FieldType數(shù)據(jù)庫(kù)字段類型

1、AutoField:自增Field域,自動(dòng)增加的一個(gè)數(shù)據(jù)庫(kù)字段類型,例如id字段就可以使用該數(shù)據(jù)類型,參數(shù)中必須填入primary_key=True

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

3、BigIntegerField:大整型,只要用于存儲(chǔ)整型的數(shù)據(jù)

4、BinaryField:主要是存儲(chǔ)原始的二進(jìn)制數(shù)據(jù)

5、BooleanField:主要是存儲(chǔ)布爾類型的數(shù)據(jù),0和1

6、CharField:主要存儲(chǔ)字符串的數(shù)據(jù)類型

7、DateField:主要存儲(chǔ)日期類型的數(shù)據(jù)類型,日期格式為YYYY-MM-DD

8、DateTimeField:主要存儲(chǔ)時(shí)間相關(guān)的數(shù)據(jù)類型,格式為YYYY-MM-DD HH:MM:[ss[.uuuuuu]][TZ]

注意:DateField與DateTimeField有兩個(gè)屬性,配置auto_now_add=True,創(chuàng)建數(shù)據(jù)記錄的時(shí)候會(huì)把當(dāng)前時(shí)間添加到數(shù)據(jù)庫(kù),配置auto_now=True,每次更新數(shù)據(jù)記錄的時(shí)候都會(huì)更新該字段

9、DecimalField:主要存儲(chǔ)固定精度的十進(jìn)制數(shù)據(jù)

--參數(shù):max_digits(小數(shù)總長(zhǎng)度)/decimal_places(小數(shù)位長(zhǎng)度)

10、EmailField:存儲(chǔ)電子郵件格式的數(shù)據(jù),Django Admin以及ModelForm中提供驗(yàn)證機(jī)制

11、FileField:存儲(chǔ)文件類型的數(shù)據(jù),文件上傳到指定目錄

--參數(shù):upload_to="...."(上傳文件的保存路徑)/storage=None(存儲(chǔ)組件,默認(rèn)django.core.files.storage.FileSystemStorage)

12、FilePathField:存儲(chǔ)文件路徑的數(shù)據(jù),提供讀取文件夾下文件的功能

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

13、FloatField:存儲(chǔ)浮點(diǎn)型數(shù)據(jù)

14、ImageField:存儲(chǔ)圖片型數(shù)據(jù),文件上傳到指定目錄

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

15、IntegerField:存儲(chǔ)整型數(shù)據(jù)

16、GenericIPAddressField:存儲(chǔ)IP地址信息數(shù)據(jù)

17、NullBooleanField:可以存儲(chǔ)布爾值數(shù)據(jù),也可以存儲(chǔ)空null數(shù)據(jù)

18、PositiveIntegerField:主要存儲(chǔ)正整數(shù)數(shù)據(jù)

19、SmallIntegerField:小整型,主要用于存儲(chǔ)整型的數(shù)據(jù)

20、TextField:存儲(chǔ)文章內(nèi)容信息數(shù)據(jù),存儲(chǔ)比較長(zhǎng)的文本信息

21、TimeField:存儲(chǔ)時(shí)間信息

22、URLField:存儲(chǔ)URL網(wǎng)址信息,Django Admin以及ModelForm中提供驗(yàn)證url

23、IPAddressField:Django Admin以及ModelForm中提供驗(yàn)證IPV4機(jī)制

24、GenericIPAddressField:Django Admin以及ModelForm中提供驗(yàn)證IPV4和IPV6機(jī)制

二、常用關(guān)系型數(shù)據(jù)表處理Field

1、處理一對(duì)多關(guān)系數(shù)據(jù)表:使用ForeignKey

2、處理多對(duì)多關(guān)系數(shù)據(jù)表:使用ManyToManyField

三、字段參數(shù)

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

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

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

4、default:為該字段設(shè)置默認(rèn)值

四、關(guān)系字段

1、to:設(shè)置要關(guān)聯(lián)的表

2、to_field:設(shè)置要關(guān)聯(lián)的表的字段

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

4、on_delete:當(dāng)刪除關(guān)聯(lián)表中的數(shù)據(jù)時(shí),當(dāng)前表與其關(guān)聯(lián)的行的行為,例如刪除一個(gè)出版社,那么和這個(gè)出版社有關(guān)聯(lián)的書籍也都被刪除掉了,下面介紹on_delete的參數(shù)值:

on_delete=models.CASCADE:刪除關(guān)聯(lián)數(shù)據(jù),與之關(guān)聯(lián)也刪除

on_delete=models.DO_NOTHING:刪除關(guān)聯(lián)數(shù)據(jù),引發(fā)錯(cuò)誤IntegrityError

on_delete=models.PROTECT:刪除關(guān)聯(lián)數(shù)據(jù),引發(fā)錯(cuò)誤ProtectedError

on_delete=models.SET_NULL:刪除關(guān)聯(lián)數(shù)據(jù),與之關(guān)聯(lián)的值設(shè)置為null(前提FK字段需要設(shè)置為可空)

on_delete=models.SET_DEFAULT:刪除關(guān)聯(lián)數(shù)據(jù),與之關(guān)聯(lián)的值設(shè)置為默認(rèn)值(前提FK字段需要設(shè)置默認(rèn)值)

on_delete=models.SET:刪除關(guān)聯(lián)數(shù)據(jù):

a、與之關(guān)聯(lián)的值設(shè)置為指定值,設(shè)置:models.SET(值)

b、與之關(guān)聯(lián)的值設(shè)置為可執(zhí)行對(duì)象的返回值,設(shè)置:models.SET(可執(zhí)行對(duì)象)

5、db_constraint:是否在數(shù)據(jù)庫(kù)中創(chuàng)建外鍵約束,默認(rèn)為True,db_constraint一般使用在建立數(shù)據(jù)表連接關(guān)系當(dāng)中(例如創(chuàng)建外鍵),如果使用False,則是限制了表之間沒(méi)有關(guān)聯(lián),達(dá)到了軟連接的效果

五、元信息

ORM對(duì)應(yīng)的類里面包含另一個(gè)Meta類,而Meta類封裝了一些數(shù)據(jù)庫(kù)的信息,主要字段如下:

1、db_table:ORM在數(shù)據(jù)庫(kù)中的表名默認(rèn)為app_類名,可以通過(guò)db_table可以重寫表名

2、index_together:聯(lián)合索引,給兩列做索引

3、unique_together:聯(lián)合唯一索引,兩列不能重復(fù)

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

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

以上這篇Django中的AutoField字段使用就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python使用pyautocad+openpyxl處理cad文件示例

    Python使用pyautocad+openpyxl處理cad文件示例

    這篇文章主要介紹了Python使用pyautocad+openpyxl處理cad文件,結(jié)合實(shí)例形式分析了Python使用pyautocad與openpyxl模塊讀寫cad文件相關(guān)應(yīng)用操作技巧,需要的朋友可以參考下
    2019-07-07
  • 一分鐘教你用Python寫一幅春聯(lián)

    一分鐘教你用Python寫一幅春聯(lián)

    大家好,本篇文章主要講的是一分鐘教你用Python寫一幅春聯(lián),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 對(duì)python模塊中多個(gè)類的用法詳解

    對(duì)python模塊中多個(gè)類的用法詳解

    今天小編就為大家分享一篇對(duì)python模塊中多個(gè)類的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • python面試題之read、readline和readlines的區(qū)別詳解

    python面試題之read、readline和readlines的區(qū)別詳解

    當(dāng)python進(jìn)行文件的讀取會(huì)遇到三個(gè)不同的函數(shù),它們分別是read(),readline(),和readlines(),下面這篇文章主要給大家介紹了關(guān)于python面試題之read、readline和readlines區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • pytest利用request?fixture實(shí)現(xiàn)個(gè)性化測(cè)試需求詳解

    pytest利用request?fixture實(shí)現(xiàn)個(gè)性化測(cè)試需求詳解

    這篇文章主要為大家詳細(xì)介紹了pytest如何利用request?fixture實(shí)現(xiàn)個(gè)性化測(cè)試需求,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-09-09
  • python MD5加密的示例

    python MD5加密的示例

    這篇文章主要介紹了python MD5加密的示例,幫助大家更好的利用python進(jìn)行加密,感興趣的朋友可以了解下
    2020-10-10
  • 深入理解python多線程編程

    深入理解python多線程編程

    進(jìn)程是資源分配的最小單位,他是操作系統(tǒng)進(jìn)行資源分配和調(diào)度運(yùn)行的基本單位。通俗理解:一個(gè)正在運(yùn)行的一個(gè)程序就是一個(gè)進(jìn)程,本文重點(diǎn)給大家介紹python多線程編程的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-04-04
  • pytorch實(shí)現(xiàn)梯度下降和反向傳播圖文詳細(xì)講解

    pytorch實(shí)現(xiàn)梯度下降和反向傳播圖文詳細(xì)講解

    這篇文章主要介紹了pytorch實(shí)現(xiàn)梯度下降和反向傳播,反向傳播的目的是計(jì)算成本函數(shù)C對(duì)網(wǎng)絡(luò)中任意w或b的偏導(dǎo)數(shù)。一旦我們有了這些偏導(dǎo)數(shù),我們將通過(guò)一些常數(shù)α的乘積和該數(shù)量相對(duì)于成本函數(shù)的偏導(dǎo)數(shù)來(lái)更新網(wǎng)絡(luò)中的權(quán)重和偏差
    2023-04-04
  • Python實(shí)現(xiàn)socket庫(kù)網(wǎng)絡(luò)通信套接字

    Python實(shí)現(xiàn)socket庫(kù)網(wǎng)絡(luò)通信套接字

    socket又叫套接字,實(shí)現(xiàn)網(wǎng)絡(luò)通信的兩端就是套接字。分為服務(wù)器對(duì)應(yīng)的套接字和客戶端對(duì)應(yīng)的套接字,本文給大家介紹Python實(shí)現(xiàn)socket庫(kù)網(wǎng)絡(luò)通信套接字的相關(guān)知識(shí),包括套接字的基本概念,感興趣的朋友跟隨小編一起看看吧
    2021-06-06
  • python之pymysql模塊簡(jiǎn)單應(yīng)用示例代碼

    python之pymysql模塊簡(jiǎn)單應(yīng)用示例代碼

    這篇文章主要介紹了python之pymysql模塊簡(jiǎn)單應(yīng)用示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評(píng)論

定远县| 云林县| 仪陇县| 丹阳市| 济南市| 崇明县| 屏南县| 襄城县| 旌德县| 新民市| 漾濞| 平乐县| 安陆市| 海门市| 赞皇县| 建水县| 莆田市| 武清区| 奉新县| 宽城| 宁陵县| 安徽省| 施甸县| 达拉特旗| 洮南市| 黔江区| 黑龙江省| 南皮县| 乾安县| 昭平县| 吉木乃县| 中山市| 永善县| 凯里市| 岚皋县| 五台县| 逊克县| 固阳县| 新绛县| 峨山| 琼结县|