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 的對象描述符