django - (DJANGO) 如何在 django Templete 的一页上显示类别和相关产品的列表?
问题描述
有两种模型: ''python
class Category(models.Model):
name = models.CharField(_('category Name'), max_length=64)
...
class Book(models.Model):
title = models.CharField(_('book Title'), max_length=256)
category = models.ForeignKey(Category, related_name='category_book')
...
如何使视图一个请求显示在与书籍相关的类别的模板列表中。例如:
小说:
- 书 1
- 书 2
故事:
- 书 3
- 第四册
- 第 5 册
ETC..
解决方案
我个人会将相关名称更改为related_name='books'
然后您可以按照以下方式构建查询集Category.objects.prefetch_related('books')
然后可以在详细视图中使用它;
class CategoryView(DetailView):
model = Category
def get_queryset(self):
return self.model.objects.prefetch_related('books')
然后在模板中它将是一个循环;
{% for cat in object_list %}
{{ cat }}
{% for book in cat.books.all %}
{{ book }}
{% endfor %}
{% endfor