您好,登錄后才能下訂單哦!
小編給大家分享一下關于Django2.0外鍵參數(shù)on_delete使用方法的案例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家學習,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去學習方法吧!
最新的django2.0使用外鍵(ForeignKey)和一對一(OneToOneField)的時候,必須添加on_delete參數(shù),不然就會報錯。
剛使用django2.0的朋友,總是遇到類似下面的報錯,這就是沒有給外鍵添加on_delete參數(shù)的原因。
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參數(shù)的各個值的含義:
on_delete=None, # 刪除關聯(lián)表中的數(shù)據(jù)時,當前表與其關聯(lián)的field的行為 on_delete=models.CASCADE, # 刪除關聯(lián)數(shù)據(jù),與之關聯(lián)也刪除 on_delete=models.DO_NOTHING, # 刪除關聯(lián)數(shù)據(jù),什么也不做 on_delete=models.PROTECT, # 刪除關聯(lián)數(shù)據(jù),引發(fā)錯誤ProtectedError # models.ForeignKey('關聯(lián)表', on_delete=models.SET_NULL, blank=True, null=True) on_delete=models.SET_NULL, # 刪除關聯(lián)數(shù)據(jù),與之關聯(lián)的值設置為null(前提FK字段需要設置為可空,一對一同理) # models.ForeignKey('關聯(lián)表', on_delete=models.SET_DEFAULT, default='默認值') on_delete=models.SET_DEFAULT, # 刪除關聯(lián)數(shù)據(jù),與之關聯(lián)的值設置為默認值(前提FK字段需要設置默認值,一對一同理) on_delete=models.SET, # 刪除關聯(lián)數(shù)據(jù), a. 與之關聯(lián)的值設置為指定值,設置:models.SET(值) b. 與之關聯(lián)的值設置為可執(zhí)行對象的返回值,設置:models.SET(可執(zhí)行對象)
多對多不需要on_delete,這就不多說了。想要了解更多on_delete的資料,可去官網進行查看。
以上是關于Django2.0外鍵參數(shù)on_delete使用方法的案例分析的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。