Django 模型類ForeignKey 選項引數
阿新 • • 發佈:2018-12-11
to_fields
被關聯欄位用於關聯的欄位,預設情況下,Django使用被關聯物件的主鍵
如果主表的主鍵有可能發生改變,則需要在外來鍵欄位的引數中to_fields指定到被關聯主表的一個必傳(unique)的某個欄位,使其不影響之前的業務邏輯
relate_name
舉例:一個人物資訊表(PeopleInfo)擁有的欄位是models.ForeignKey(Book),則預設會有一個relate_name為"peopleinfo_set"(被關聯模型類小寫+_set),如果在外來鍵關係裡修改了relate_name ,如,model.ForeignKey(Book, relate_name=“person”),則People的物件描述符號就變成了“person”,可以通過book.person 取到所有關聯這本書的人物 (未指定之前是通過book.peopleinfo_set)
真正的用處是在一個物件被另一個物件關聯不止一次時,這個引數才真正有用
舉例:如果一個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 的物件描述符