django在開發中取消外來鍵約束的實現
阿新 • • 發佈:2020-05-21
我就廢話不多說了,大家還是直接看程式碼吧!
# 在setting設定外來鍵 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;",}
補充知識:django-給外來鍵關係傳值,刪除外來鍵關係
反查:
在表關係裡 related_name = '反查name',自己不設定,django也會預設設定為class的小寫名字+_set,ex: book_set.
一對一關係賦值:
class ModelStudy(View): ''' ClassRoom和ClassNumber是一對一關係,給外來鍵傳值 ''' def get(self,request): ''' 兩種方法 教室ClassRoom和教室編號ClassNumber 外來鍵欄位在django類里名(room_number)在資料庫名(room_number_id) ''' # 一.1賦值物件給外來鍵欄位 # room_number = ClassNumber.objects.filter(class_number__exact='003')[0] # d對List切片 # c = ClassRoom() # c.room_number = room_number # c.save() # 1.2新增資料並賦值物件給新增欄位 room_number = ClassNumber.objects.filter(class_number__exact='003')[0] print room_number ClassRoom.objects.create(name="python教室",room_number=room_number) # 新增資料 # 二:獲取外來鍵欄位(資料庫的外來鍵欄位名字room_number_id)的值,將相對應的值直接賦值給該外來鍵欄位 class_number = ClassNumber.object.get("id=1").room_number # 獲取教室編號具體值 ‘001' c = ClassRoom.object.filter(id=1)[0] c.room_number_id = class_number # 將‘001'複製給資料庫外來鍵欄位 外來鍵欄位在django類里名(room_number)在資料庫名(room_number_id) c.save() return HttpResponse("ojbk")
多對一:
類似一對一,只是 ''多''的一方可以對應多個"一"方。 ps: "一"放通過反查,會有不止一條資料。可以通過+all()獲取。
假設兩張表:Book書 + Reply評論 表。為多對一,Reply為"多''. 那麼"一",Book反查是,Book.object.get(id=1).reply_set.all() # reply_set是不設定related_name時,django自己設定的
多對多:
class ModelStudy(View): ''' Students和Teachers是多對多關係 ''' def get(self,request): ''' 兩種情況 ''' # 主類(外來鍵所在類)資料已經存在 # t = Teachers.objects.get(id=1) # s = Students.objects.get(name="學生3") # s.teacher.add(t) # 多對多需要add資料 # s.save() # 主類資料不存在,新增資料時,需先save() t = Teachers.objects.get(id=1) s = Students(name='xiaodong1',age=10,gender="男") s.save() # 先存新增資料 s.teacher.add(t) # 再給新增資料新增多對多關係 可以add(t,t1,t2)多個對應的關係 s.save() return HttpResponse("ojbk")
刪除關係資料
先查出對應的關係資料,在刪除
class ModelStudy(View): ''' Students和Teachers是多對多關係 ''' def get(self,request): ''' 兩種情況 ''' s = Students.objects.get(id=1) t = s.teacher.all() # 多對多 s.teacher是一個<QuerySet>list物件 通過反查取值需要all(),get(),filter之類的 for x in t: # 刪除所有對應關係 haha... s.teacher.remove(x) return HttpResponse("ojbk")
以上這篇django實現在開發中取消外來鍵約束就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。