我有一个 Book 模型,它有多个作者、流派。以下是具有所有外键关系的模型。
模型.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'
}
]
}
如何在我的 views.py 方法中访问与图书相关的作者、流派
最佳答案
您无需更改 View 中的任何内容,对于反向查找,您可以调用模型的反向关系访问器并利用所有相关对象。
在你的模板中,
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 %}
关于python - Django - 查询集以获取模型的所有相关详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45397210/