2017-07-30 109 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

相关问题