Django:如何通过与外键相关的对象获取对象

Django: How to get a Object over a Object related with Foreign Keys

我正在用 django 做一个网络应用程序。目前我有点受困于 DetailViews 和显示来自与外键相关的不同模型的数据。

例如我有以下型号:
- 图书馆
- 书籍(与图书馆有关)
- 页面(与书籍相关)

目前我有一个带有模型 Book 的 DetailView。
我设法通过“_set.all”访问了这本书。
现在我还需要访问那本书的页面。

Models.py:

class Library(models.Model):
    name = models.CharField(max_length=50)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

class Book(models.Model):
    title = models.IntegerField()
    library = models.ForeignKey(Library, on_delete=models.CASCADE)

class Page(models.Model):
    content= models.CharField(max_length=50000)
    book = models.ForeignKey(Book, on_delete=models.CASCADE)

Views.py

class TableDetailView(User, LoginRequiredMixin, DetailView):
    model = Library
    template_name = 'library/table.html'
    context_object_name = 'library'

table.html

<ul>
    {% for book in library.book_set.all %}
        <li>{{ book.title }}</li>
    {% endfor %}
</ul>
<!-- Works until here -->
<ul>
    {% for page in library.book.page_set.all %}
        <li>{{ page.content }}</li>
    {% endfor %}
</ul>

如何让页面内容显示在我的视图中? 感谢您的帮助 <3

library.book 不是正确的关系。对于您要实现的用例,

<ul>
    {% for book in library.book_set.all %}
        <li>{{ book.title }}
            <ul>
                {% for page in book.page_set.all %}
                    <li>{{ page.content }}</li>
                {% endfor %}
            </ul>
        </li>
    {% endfor %}
</ul>