【问题标题】:Django: How to get a Object over a Object related with Foreign KeysDjango:如何通过与外键相关的对象获取对象
【发布时间】:2019-04-17 08:08:37
【问题描述】:

我正在用 django 做一个 webapp。目前我有点卡在 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>

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

【问题讨论】:

    标签: django django-models detailview


    【解决方案1】:

    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>
    

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 2018-02-14
      • 2015-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2018-10-05
      • 2021-10-04
      相关资源
      最近更新 更多