Django中related_name作用
阿新 • • 發佈:2018-08-29
efi all ger 表示 哪些 char 屬於 erb person
作用:相當於我們使用related代替了在通過一個對象查詢出多個對象集合時,使用表名_set來獲取
1 我先定義兩個模型,一個是作者,一個是作者出版的書籍,算是一對多的類型。 2 3 class Person(models.Model); 4 name = models.CharField(verbose_name=‘作者姓名‘, max_length=10) 5 age = models.IntegerField(verbose_name=‘作者年齡‘) 6 7 8 class Book(models.Model): 9 person = models.ForeignKey(Person, related_name=‘person_book‘) 10 title = models.CharField(verbose_name=‘書籍名稱‘, max_length=10) 11 pubtime = models.DateField(verbose_name=‘出版時間‘) 12 13 14 如果我們要查詢一個作者出版了哪些書籍的話,那我們要怎麽做呢? 15 即通過一查詢出多的那方面 16 17 先查詢到作者的信息 18 person = Person.objects.fiter(你的條件) 19 返回一個person對象 20 21 接下來就查詢person關聯的所有書籍對象,我們在前面講過的使用基於對象的查詢方式,反向查詢按照表名22 book = person.book_set.all() 23 django 默認每個主表的對象都有一個是外鍵的屬性,可以通過它來查詢到所有屬於主表的子表的信息。 24 這個屬性的名稱默認是以子表的名稱小寫加上_set()來表示,默認返回的是一個querydict對象,你可以繼續的根據情況來查詢等操作。 25 26 在實際項目中,我們使用最多的還是related_name 27 如果你覺得上面的定義比較麻煩的話,你也可以在定義主表的外鍵的時候,給這個外鍵定義好一個名稱。要用related_name比如在Book表中: 28 person = models.ForeignKey(Person, related_name=‘person_books‘) 29 那麽實現上面的需求,可以使用person.book_set.all() 30 也可以使用person.person_books.all()
Django中related_name作用