溫馨提示×

溫馨提示×

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

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

關于Django2.0外鍵參數on_delete使用方法的案例分析

發布時間:2020-08-01 11:53:58 來源:億速云 閱讀:167 作者:清晨 欄目:編程語言

小編給大家分享一下關于Django2.0外鍵參數on_delete使用方法的案例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家學習,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學習方法吧!

最新的django2.0使用外鍵(ForeignKey)和一對一(OneToOneField)的時候,必須添加on_delete參數,不然就會報錯。

剛使用django2.0的朋友,總是遇到類似下面的報錯,這就是沒有給外鍵添加on_delete參數的原因。

TypeError: __init__() missing 1 required positional argument: 'on_delete'

官方案例:

一對一(OneToOneField)

from django.conf import settings
from django.db import models
class MySpecialUser(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,)
    supervisor = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name=
    'supervisor_of',)

一對多(ForeignKey)

from django.db import models
class AbstractCar(models.Model):
    manufacturer = models.ForeignKey('Manufacturer', on_delete=models.CASCADE)
    class Meta:
        abstract = True

下面下整理的on_delete參數的各個值的含義:

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(可執行對象)

多對多不需要on_delete,這就不多說了。想要了解更多on_delete的資料,可去官網進行查看。

以上是關于Django2.0外鍵參數on_delete使用方法的案例分析的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女