Django中related_name作用


作用:相當於我們使用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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM