模型類如下:
比如: role = roles.objects.get(rname='葉修') 這裡role就是乙個類物件, role中包含葉修的所有資訊, 可以通過role.rage, role.source 等通過 . 來獲取屬性
一:roles模型類中會有乙個隱藏屬性: rbook_id 值是整型, 是books模型類中的id 是每個角色所屬的**的id, 這一點從資料庫表中可以看到
二:roles中的rbook欄位型別(外來鍵屬性)是乙個類物件, 是books類的類物件, 包含books對應**中的所有資訊, 這才是真正的隱藏屬性, 這個字段真實存在, 但是資料庫表中卻不會顯示. 因為這是乙個類物件, 資料庫表中也沒發顯示. 所以roles.rbook.books中屬性 就可以拿到選中角色對應books中對應**的所有屬性
什麼叫選中角色對應books中**的所有屬性呢?
舉個例子就明白了
假如說, 我們要找蕭瑟屬於哪本**,並返回**的名字和作者(根據角色找**)
首先先確定蕭瑟這個角色:
role = roles.objects.get(rname='蕭瑟') 這就找到了蕭瑟這個角色, role是乙個類物件, 這個類物件包含蕭瑟一行的所有東西,自然也包含蕭瑟這個一行的rbook欄位
其次根據角色找**
roles.rbook.bname : 這就是**名字
roles.rbook.writer : 這就是**作者
所以 蕭瑟這個role物件中的rbook是包含books中少年歌行那一行的所有資料, 而不是books中的所有資料
books中的外來鍵屬性book也是同理, 因為有related_name = 'rbooks',所以在books模型類中, rbook也是乙個隱藏屬性
1, 原理: roles.rbook roles類使用rbook類屬性, 二rbook有事books的類物件,可以拿到對應books模型類中的對應**的所有資訊, 所以所以roles.rbook.books中屬性 就可以拿到選中角色對應books中對應**的所有屬性
2, 在序列化器中若想通過rbook欄位拿到books中對應**的一些資訊(如果只獲取books中的id或者書名, 直接用序列化器自帶的兩個方法就行, 注意一點, 要想用自帶方法取得書名, books類中需定義魔法方法__str__ 並返回書名), 就需要再定義乙個序列化器(序列化器不就是物件轉字典嗎, rbook就是books的類物件)
mysql 中不能關聯外來鍵 mysql 外來鍵關聯
mysql 外來鍵關聯 什麼是外來鍵 外來鍵是乙個特殊的索引,用於關聯兩個表,只能是指定內容。如我將新建乙個daka的表,然後將此表的class id 與另外乙個class的表的cid欄位關聯 class表 create table class cid int 11 not null auto in...
django模型中有外來鍵關係的表刪除相關設定
例如有author authordetail兩表 author models.onetoonefield to author null true,related name detail db constraint false,on delete models.cascade 1 關係字段放在auth...
django中的資料庫外來鍵操作
以mysql為例 1 在model中定義兩個資料表,食物資訊和食物類別資訊 class foodinfo models.model food id models.autofield max length 4 自定義主鍵,不指定主鍵缺省會生成乙個名為 id 列的主鍵 food name models....