Django中related_name作用


相當於我們使用related代替了在通過一個對象查詢出多個對象集合時,使用表名_set來獲取

我先定義兩個模型,一個是作者,一個是作者出版的書籍,算是一對多的類型。 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()

 


免責聲明!

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



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