Django 在創(chuàng)建ForeignKey中出現(xiàn)錯誤

今天在使用Django創(chuàng)建模型類的時候,出現(xiàn)了如下問題

一、

  • 在模型類里面創(chuàng)建外鍵,并生成遷移文件后,報了下面的錯:

  hbook = models.ForeignKey('BookInfo')  #關(guān)系屬性,建立一類和多類之間的關(guān)系
TypeError: __init__() missing 1 required positional argument: 'on_delete'

  • 原因:

在django2.0后,定義外鍵和一對一關(guān)系的時候需要加on_delete選項,此參數(shù)為了避免兩個表里的數(shù)據(jù)不一致問題,不然會報錯:

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

  • 解決方法:

hbook=models.ForeignKey('BookInfo',on_delete=models.CASCADE,)
即在外鍵值的后面加上 on_delete=models.CASCADE

二、

  • 在解決了上述問題后,重新執(zhí)行遷移文件,還是報錯:

You are trying to add a non-nullable field 'hbook' to heroinfo without a default; we can't do that (the database needs something to populate existing rows).

  • 原因:

提示我ForeignKey必須有一個default值。但是django里面沒有要求ForeignKey必須有一個默認(rèn)值。
原來舊的數(shù)據(jù)庫文件和現(xiàn)在執(zhí)行的操作有沖突。

  • 解決方法:

把migrations文件夾內(nèi)除了init.py以外的文件刪除,重新執(zhí)行makemigrations就可以了。
完成!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容