2017-07-30 64 views
2

我有有多個作者,流派Book模型。以下是具有所有ForeignKey關係的模型。Django的 - 查詢集獲得所有相關的細節模型

models.py

class Book(models.Model): 
    title = models.CharField(max_length=200) 

class Author(models.Model): 
    name = models.CharField(max_length=100) 

class Genre(models.Model): 
    genre_name = models.CharField(max_length=50) 

class Book_author(models.Model): 
    book = models.ForeignKey(Book) 
    author = models.ForeignKey(Author) 

class Book_genre(models.Model): 
    book = models.ForeignKey(Book) 
    genre = models.ForeignKey(Genre) 

views.py

def book_detail(request, book_id): 
    book = Book.objects.get(pk=book_id) 
    # how can i get iterated multiple authors, books attached to book dictionary 
    return render(request, 'detail.html', {'book': book}) 

書對象例如:

book = { 
    title: 'some title', 
    authors: [ 
       { 
       id: 1, 
       name: 'name1' 
       }, 
       { 
       id: 2, 
       name: 'name2' 
       } 
    ], 
    genres: [ 
     { 
      id: 1, 
      genre_name: 'somegenre1' 
     }, 
     { 
      id: 1, 
      genre_name: 'somegenre2' 
     } 
    ] 
} 

我怎樣才能ACC ESS圖書相關的作者,流派在我的views.py方法

回答

1

你不需要在視圖中改變什麼,你可以調用模型的反向關係訪問和果所有相關對象反向查找。

在你的模板,

title : {{ book.title }} 
authors : {% for item in book.book_author_set.all %} {{ item.author.name }} {% endfor %} 
genres : {% for item in book.book_genre_set.all %} {{ item.genre.genre_name }} {% endfor %} 
+0

感謝,在模板的作品,但我想這些作者,預訂我的'views.py'方法並進行修改,在這裏我做了什麼關聯種類'書= Book.objects.get(PK = book_id)book.book_genre_set.all() pprint商(VAR(book.genre))',但它給我'屬性error'' '書' 對象有沒有屬性「genre''我怎樣才能得到他們 – Srinivas

+0

嘗試,'對於book.book_genre_set.all():item.genre.genre_name'中的項目。 – zaidfazil

+0

雅我知道了,再次感謝如果我有任何疑問進一步我會張貼在這裏 – Srinivas

相關問題