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個實體作為整個模型的核心實體,核心實體一般...