django資料模型中關於on delete的使用

2022-10-09 12:57:10 字數 1321 閱讀 3015

cascade:這就是預設的選項,級聯刪除,你無需顯性指定它。

protect: 保護模式,如果採用該選項,刪除的時候,會丟擲protectederror錯誤。

set_null: 置空模式,刪除的時候,外來鍵字段被設定為空,前提就是blank=true, null=true,定義該字段的時候,允許為空。

set_default: 置預設值,刪除的時候,外來鍵字段設定為預設值,所以定義外來鍵的時候注意加上乙個預設值。

set(): 自定義乙個值,該值當然只能是對應的實體了

補充說明:關於set()的使用

**官方案例**

def get_sentinel_user():

return get_user_model().objects.get_or_create(username='deleted')[0]

class mymodel(models.model):

user = models.foreignkey(

settings.auth_user_model,

on_delete=models.set(get_sentinel_user),

)

on_delete=none,               # 刪除關聯表中的資料時,當前表與其關聯的field的行為

on_delete=models.cascade, # 刪除關聯資料,與之關聯也刪除

on_delete=models.do_nothing, # 刪除關聯資料,什麼也不做

on_delete=models.protect, # 刪除關聯資料,引發錯誤protectederror

# models.foreignkey('關聯表', on_delete=models.set_null, blank=true, null=true)

on_delete=models.set_null, # 刪除關聯資料,與之關聯的值設定為null(前提fk欄位需要設定為可空,一對一同理)

# models.foreignkey('關聯表', on_delete=models.set_default, default='預設值')

on_delete=models.set_default, # 刪除關聯資料,與之關聯的值設定為預設值(前提fk欄位需要設定預設值,一對一同理)

on_delete=models.set, # 刪除關聯資料,

a. 與之關聯的值設定為指定值,設定:models.set(值)

b. 與之關聯的值設定為可執行物件的返回值,設定:models.set(可執行物件)

django資料模型中關於on delete的使用

class bookmodel models.model 書籍表 book name models.charfield max length 100,verbose name 書名 表示外來鍵關聯到作者表,當作者表刪除了該條資料,圖書表中不刪除,僅僅是把外來鍵置空 author models.for...

Django 資料模型高階

訪問外來鍵 foreignkey 值 當你訪問乙個外來鍵屬性時,獲取的是乙個資料模型物件 models.py from django.db import models class publisher models.model name models.charfield max length 50 w...

關於資料模型

1 在資料庫設計中,設計的目標就是要建立e r圖 實體 關係圖 2 powerdesigner中,建立概念模型或者邏輯模型。1.確認核心實體 實體分為兩部分 標識 主鍵 和屬性。在確認乙個實體的過程中,首先就是要確認實體的主鍵。乙個資料庫模型中一般會有1 2個實體作為整個模型的核心實體,核心實體一般...