本人親測,目前只有發現一種辦法。當執行 python manage.py makemigrations 出現錯誤:TypeError: init() missing 1 required positional argument: ‘on_delete’以下是報錯截圖:

topic = models.ForeignKey('Topic', on_delete=models.CASCADE)

原因如下:
django 升級到2.0之后,表與表之間關聯的時候,必須要寫on_delete引數,否則會報例外:
TypeError: init() missing 1 required positional argument: ‘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(可執行物件)
注:文章由作者原創,如需轉載請注明來源。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/284682.html