1. 程式人生 > >Django中related_name作用

Django中related_name作用

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作用