Django生成數據庫及添加用戶報錯解決方案
Django生成數據庫表時報錯 __init__() missing 1 required positional argument: ’on_delete’
原因:
在django2.0后,定義外鍵和一對一關系的時候需要加上on_delete選項,此參數為了避免兩個表里的數據不一致問題,不然會報錯
例如:
owner=models.ForeignKey(UserProfile)--->報錯
owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE) --在老版本這個參數(models.CASCADE)是默認值
參數說明:
on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五個可選的值
CASCADE:級聯刪除。
PROTECT:報完整性錯誤。
SET_NULL:將外鍵設置為null,前提是允許為null。
SET_DEFAULT:將外鍵設置為一個默認值
SET():調用外面的值,可以是一個函數
注:一般使用CASCADE就可以了。
在使用Django添加用戶時出現報錯:
django.db.utils.IntegrityError: (1452, ’Cannot add or update a child row: a foreign key constraint fai ls (`cms`.`app01_book_author`, CONSTRAINT `app01_book_author_book_id_df0ca405_fk_app01_book_id` FOREIG N KEY (`book_id`) REFERENCES `app01_book` (`id`))’) [31/Mar/2019 21:20:45] 'GET /addbook/ HTTP/1.1' 500 216210
解決辦法,需要在setting.py文件的databases中取消外鍵檢查:
1 DATABASES = {
DATABASES = { ’default’: { ’ENGINE’: ’django.db.backends.mysql’, ’NAME’: ’cms’, # 你的數據庫名稱 ’USER’: ’root’, # 你的數據庫用戶名 ’PASSWORD’: ’123456’, # 你的數據庫密碼 ’HOST’: ’’, # 你的數據庫主機,留空默認為localhost ’PORT’: ’3306’, # 你的數據庫端口 ’OPTIONS’: { 'init_command': 'SET foreign_key_checks = 0;', # 取消外鍵檢查 } } }
問題解決!!!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. Nodejs 連接 mysql時報Error: Cannot enqueue Query after fatal error錯誤的處理辦法2. PHP里10個鮮為人知但卻非常有用的函數3. vue實現分頁的三種效果4. Python搭建Keras CNN模型破解網站驗證碼的實現5. Java 并行數據處理和性能分析6. Java Bean與Map之間相互轉化的實現方法7. ajax請求后臺得到json數據后動態生成樹形下拉框的方法8. 解決python腳本中error: unrecognized arguments: True錯誤9. AJAX實現數據的增刪改查操作詳解【java后臺】10. python算的上腳本語言嗎
