https://blog.csdn.net/hpu_yly_bj/article/details/78939748 to_fields 被關(guān)聯(lián)字段用于關(guān)聯(lián)的字段,默認情況下,Django使用被關(guān)聯(lián)對象的主鍵 如果主表的主鍵有可能發(fā)生改變,則需要在外鍵字段的參數(shù)中to_fields指定到被關(guān)聯(lián)主表的一個必傳(unique)的某個字段,使其不影響之前的業(yè)務邏輯 relate_name 舉例:一個人物信息表(PeopleInfo)擁有的字段是models.ForeignKey(Book),則默認會有一個relate_name為"peopleinfo_set"(被關(guān)聯(lián)模型類小寫+_set),如果在外鍵關(guān)系里修改了relate_name ,如,model.ForeignKey(Book, relate_name=“person”),則People的對象描述符號就變成了“person”,可以通過book.person 取到所有關(guān)聯(lián)這本書的人物 (未指定之前是通過book.peopleinfo_set) 真正的用處是在一個對象被另一個對象關(guān)聯(lián)不止一次時,這個參數(shù)才真正有用 舉例:如果一個Story 對象既有frist_category 字段,又又second_category 字段,為確保Category 對象擁有正確的對象描述符,需要指定relate_name models.ForeignKey(Category, relate_name="first_story") models.ForeignKey(Category, relate_name="second_story") 這樣 Category對象才會自動擁有frist_story和second_story 的對象描述符 https://blog.csdn.net/hpu_yly_bj/article/details/78939748 Django外鍵(ForeignKey)操作以及related_name的作用之前已經(jīng)寫過一篇關(guān)于Django外鍵的文章,但是當時并沒有介紹如何根據(jù)外鍵對數(shù)據(jù)的操作,也就是如何通過主表查詢子表或者通過子表查詢主表的信息 首先我定義了兩個模型,一個是老師模型,一個是學生模型,一個老師對應多個學生,這個算是一個一對多的類型(如下圖所示) 那么如果我們要想查詢一個老師對應的學生有哪些,該如何操作呢? 首先我們先查詢到老師的信息,在這里我們使用python shell 進行演示 ,輸入命令python manage.py shell 進入python shell操作界面: 第一步需要做的自然還是需要將我們的模型導入進來,并獲取老師的相關(guān)信息 返回一個teacher對象,接下來就是查詢teacher相關(guān)聯(lián)的學生對象,在這里有一個需要注意的點,django默認情況下每一個主表的對象都有一個是外鍵的屬性,可以通過它查詢到所有關(guān)于子表的信息,這個屬性的名字就是子表的名稱小寫加上_set,具體到這個就是student_set,默認返回的是QuerySet,操作如下: 在這里也會牽涉到另外一個知識點related_name的使用,在models.py使用Foreign定義外鍵的時候也可以傳入一個參數(shù)related_name,操作如下: 執(zhí)行python manage.py makemigrations 和 python manage.py migrate 從上圖可以看到和之前的_set操作的效果是一樣的,這兩個方法是相同的,所以如果覺得比較麻煩的話,可以在定義主表的外鍵的時候,直接就給外鍵定義好名稱使用related_name 上面的查詢主要是通過主表查詢子表的信息 下面說一下如何通過子表查詢主表的相關(guān)信息,也就是查詢一個學生所對應的老師的信息 首先需要先獲取一個子表的對象,那么就可以通過定義外鍵時候的那個外鍵的字段名獲取關(guān)于主表的信息了 比如我得到了一個student對象,然后我想要得到這個student對象對應的主表teache中的信息的話,就使用 student.teacher 獲取,其中這個teacher就是在子表中定義的外鍵字段,如下: ———————————————— 版權(quán)聲明:本文為CSDN博主「lotusgrm」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/hpu_yly_bj/article/details/78939748 |
|