1. 程式人生 > >Cannot assign A.id must be a B instance.類似的錯誤

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的魅力。