首页 > 解决方案 > (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')
 ...

如何使视图一个请求显示在与书籍相关的类别的模板列表中。例如:

小说:

故事:

ETC..

标签: djangodjango-modelsdjango-viewsdjango-templates

解决方案


我个人会将相关名称更改为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

推荐阅读