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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

django批量修改table_Django 数据库表多对多的创建和增删改查

發(fā)布時(shí)間:2024/1/23 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django批量修改table_Django 数据库表多对多的创建和增删改查 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前面已經(jīng)學(xué)習(xí)了在Django里面如何對單表的操作,同時(shí)也學(xué)習(xí)了1對多(單個(gè)外鍵)的表的操作。接下來,我們看看多對多(多個(gè)外鍵)的關(guān)系如何創(chuàng)建和管理。

比如說,我們有一個(gè)主機(jī)表,也有一個(gè)應(yīng)用程序表,一個(gè)主機(jī)可以對應(yīng)多個(gè)程序,一個(gè)程序也可以對應(yīng)多個(gè)主機(jī),這是一個(gè)典型的多對多的結(jié)構(gòu)。一般來說,我們會(huì)在數(shù)據(jù)庫里創(chuàng)建一個(gè)中間的表,分別和這兩個(gè)表進(jìn)行外鍵關(guān)聯(lián)。

例1. 手動(dòng)的定義一個(gè)HostToApp表,關(guān)聯(lián)到Host和Application表,這樣一來,如果我希望創(chuàng)建一個(gè)新的關(guān)聯(lián),我直接對這個(gè)中間的表進(jìn)行操作即可

例2. 除了手動(dòng)創(chuàng)建一個(gè)關(guān)系表,我們還可以讓系統(tǒng)自動(dòng)生成一個(gè)

執(zhí)行manage.py migrate和 manage.py migration 之后,查看數(shù)據(jù)庫,可以看見自動(dòng)生成了一個(gè)關(guān)系表app01_application_r, 里面有3個(gè)字段,一個(gè)id和兩個(gè)外鍵

這個(gè)自動(dòng)生成的表,在Django里面不能直接像單表一樣操作,因?yàn)橄到y(tǒng)并不知道他的‘存在’,因此只能通過間接的操作。

間接操作:

查詢

//這里首先獲取app_id=1的對象,后面的操作都是基于這個(gè)前提來的

obj=models.Application.objects.get(id=1)

obj.name

obj.r.all() //類似單表操作

增加

obj.r.add(1) ?//添加app_id=1, host_id=1的記錄

obj.r.add(2,3,4) //直接添加多個(gè)值

obj.r.add(*[1,2,3,4]) // 直接通過列表的格式添加多個(gè)值

刪除,格式和增加一樣

obj.r.remove(1)

obj.r.remove(2,3)

obj.r.remove(*[2,3,4])

obj.r.clear() //刪除所有app_id=1的關(guān)系

修改

obj.r.set([2,3,4]) //直接設(shè)置app_id=1, host_id=2,3,4,注意列表前面沒有星號

例3. 下面看個(gè)實(shí)例

models.py

urls.py ( 里面有 views.app和 views.ajax_add_app,對比ajax和普通使用)

views.py 注意獲取用戶輸入的新的App名稱和這個(gè)App所對應(yīng)的主機(jī)列表,分別在不同的表進(jìn)行創(chuàng)建新數(shù)據(jù)

app.html,主要界面是就是顯示當(dāng)前數(shù)據(jù)和一個(gè)模態(tài)對話框。點(diǎn)擊添加,彈出對話框,然后輸入App和對應(yīng)的主機(jī)名;后臺(tái)獲取之后添加返回頁面

結(jié)果如下所示:

在我們使用模態(tài)對話框的時(shí)候,使用AJAX的好處是可以實(shí)現(xiàn)一些驗(yàn)證的功能;如果我們不在同一個(gè)Url里面使用模態(tài)對話框,而是新開一個(gè)URL來創(chuàng)建數(shù)據(jù),可以直接用普通的form提交就行了。模態(tài)對話框適合小數(shù)據(jù)的提交,而新的Url更適合大量數(shù)據(jù)的提交(比如新開一個(gè)頁面寫博客)

總結(jié)

以上是生活随笔為你收集整理的django批量修改table_Django 数据库表多对多的创建和增删改查的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。