django批量修改table_Django 数据库表多对多的创建和增删改查
前面已經學習了在Django里面如何對單表的操作,同時也學習了1對多(單個外鍵)的表的操作。接下來,我們看看多對多(多個外鍵)的關系如何創建和管理。
比如說,我們有一個主機表,也有一個應用程序表,一個主機可以對應多個程序,一個程序也可以對應多個主機,這是一個典型的多對多的結構。一般來說,我們會在數據庫里創建一個中間的表,分別和這兩個表進行外鍵關聯。
例1. 手動的定義一個HostToApp表,關聯到Host和Application表,這樣一來,如果我希望創建一個新的關聯,我直接對這個中間的表進行操作即可
例2. 除了手動創建一個關系表,我們還可以讓系統自動生成一個
執行manage.py migrate和 manage.py migration 之后,查看數據庫,可以看見自動生成了一個關系表app01_application_r, 里面有3個字段,一個id和兩個外鍵
這個自動生成的表,在Django里面不能直接像單表一樣操作,因為系統并不知道他的‘存在’,因此只能通過間接的操作。
間接操作:
查詢
//這里首先獲取app_id=1的對象,后面的操作都是基于這個前提來的
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) //直接添加多個值
obj.r.add(*[1,2,3,4]) // 直接通過列表的格式添加多個值
刪除,格式和增加一樣
obj.r.remove(1)
obj.r.remove(2,3)
obj.r.remove(*[2,3,4])
obj.r.clear() //刪除所有app_id=1的關系
修改
obj.r.set([2,3,4]) //直接設置app_id=1, host_id=2,3,4,注意列表前面沒有星號
例3. 下面看個實例
models.py
urls.py ( 里面有 views.app和 views.ajax_add_app,對比ajax和普通使用)
views.py 注意獲取用戶輸入的新的App名稱和這個App所對應的主機列表,分別在不同的表進行創建新數據
app.html,主要界面是就是顯示當前數據和一個模態對話框。點擊添加,彈出對話框,然后輸入App和對應的主機名;后臺獲取之后添加返回頁面
結果如下所示:
在我們使用模態對話框的時候,使用AJAX的好處是可以實現一些驗證的功能;如果我們不在同一個Url里面使用模態對話框,而是新開一個URL來創建數據,可以直接用普通的form提交就行了。模態對話框適合小數據的提交,而新的Url更適合大量數據的提交(比如新開一個頁面寫博客)
總結
以上是生活随笔為你收集整理的django批量修改table_Django 数据库表多对多的创建和增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10卸载电脑管家就蓝屏_win10
- 下一篇: 计算方位角_全站仪各方面应用的原理、操作