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>
我正在用 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>