Cannot assign A.id must be a B instance.類似的錯誤


在Django后台中,通過模型操作數據,對數據庫進行增操作時,報出異常,如圖:

意為無法分配給“3”這個uid號,“OrderList.uid”必須是一個“User”的實例,即“OrderList.uid”不能為“3”

在通過數據庫sql語句上,我們習慣性insert into orderlist(uid) value("3")是可以正常增加數據的。

但是在通過Django操作數據庫時,不需要寫sql語句,通過模型操作數據庫:

傳值無法成功,其原因是因為orderlist表中的uid關聯User表中的uid(主鍵),通過Django進行增操作時,Orderlist.uid需要一個User的實例(外鍵約束),將orderlist字典改成如下:

即可成功進行增操作。

類似的:

其他使用Django模型對數據庫操作時,如有依賴關系,則參數的值也需要為一個對象,或查詢到的外鍵是一個對象,例:

如果通過bid=o.bid用過濾查找 book表下bid的書名將會報錯:

我們打印一下 o.bid:

結果為:

o.bid拿不到真正的id號,而是一個Book類型的對象,其原因是bid為關聯Book表的外鍵約束,o.bid.bid才可以拿到想要的id值:

結語:以上,是我第一次隨筆,在Django大而全的框架下,其中的操作方便、快捷,讓開發者節約時間,但是也需要遵守它的規則,才能釋放

Django和python的魅力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM