中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django在開發中怎么取消外鍵約束

發布時間:2020-07-23 10:28:52 來源:億速云 閱讀:182 作者:小豬 欄目:開發技術

小編這次要給大家分享的是django在開發中怎么取消外鍵約束,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

我就廢話不多說了,大家還是直接看代碼吧!

# 在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在開發中怎么取消外鍵約束的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沧州市| 清镇市| 罗源县| 北流市| 灵寿县| 景东| 筠连县| 重庆市| 来宾市| 临朐县| 正蓝旗| 乐至县| 金坛市| 石屏县| 梅河口市| 台山市| 海原县| 鄂尔多斯市| 若羌县| 闵行区| 资溪县| 冷水江市| 奉节县| 高清| 镇宁| 玉屏| 志丹县| 英吉沙县| 叶城县| 罗平县| 荆门市| 乐陵市| 蛟河市| 图木舒克市| 炉霍县| 厦门市| 吐鲁番市| 老河口市| 汾西县| 卫辉市| 金沙县|