至關於咱們使用related代替了在經過一個對象查詢出多個對象集合時,使用表名_set來獲取django
我先定義兩個模型,一個是做者,一個是做者出版的書籍,算是一對多的類型。 class Person(models.Model); name = models.CharField(verbose_name='做者姓名', max_length=10) age = models.IntegerField(verbose_name='做者年齡') class Book(models.Model): person = models.ForeignKey(Person, related_name='person_book') title = models.CharField(verbose_name='書籍名稱', max_length=10) pubtime = models.DateField(verbose_name='出版時間') 若是咱們要查詢一個做者出版了哪些書籍的話,那咱們要怎麼作呢? 即經過一查詢出多的那方面 先查詢到做者的信息 person = Person.objects.fiter(你的條件) 返回一個person對象 接下來就查詢person關聯的全部書籍對象,咱們在前面講過的使用基於對象的查詢方式,反向查詢按照表名 book = person.book_set.all() django 默認每一個主表的對象都有一個是外鍵的屬性,能夠經過它來查詢到全部屬於主表的子表的信息。 這個屬性的名稱默認是以子表的名稱小寫加上_set()來表示,默認返回的是一個querydict對象,你能夠繼續的根據狀況來查詢等操做。 在實際項目中,咱們使用最多的仍是related_name 若是你以爲上面的定義比較麻煩的話,你也能夠在定義主表的外鍵的時候,給這個外鍵定義好一個名稱。要用related_name好比在Book表中: person = models.ForeignKey(Person, related_name='person_books') 那麼實現上面的需求,能夠使用person.book_set.all() 也能夠使用person.person_books.all()