首页 > 解决方案 > 如何在 django html 中呈现模型的孩子

问题描述

我有一个博客列表页面,其中显示了一些标题文本,然后是单个博客页面的列表。

模型.py

class BlogListingPage(Page):
     blog_listing_title = models.CharField(...)
    ...    
    def get_context(self, request, *args, **kwargs):
        """Add custom content to our context."""
        context = super().get_context(request, *args, **kwargs)
        context['blog_pages'] = self.get_children().live()
        return context

class BlogDetailPage(Page):
    blog_title = models.CharField(...)

视图.py

def blog(request):
    ...
    context = {'data': BlogListingPage.objects.all()}
    return render(request, url, context)

blog_listing.html

    {% for obj in data %}
        <h2>{{ obj.blog_listing_title }}</h2>
        {% for post in obj.blog_pages.all %}
            {{ post.specific.blog_title }}
            <br>
        {% endfor %}
    {% endfor %}

blog_listing_title显示正确,但我不知道如何访问blog_title集合

我应该怎么办?我不了解 PageQuerySet 的结构以及 django 如何使用它来表达 html 元素

[编辑] 这曾经在我直接调用 url 时起作用。当我介绍视图时,我必须添加

{% for obj in data %}

那就是细节消失的时候

标签: django

解决方案


你可以检查一下:

#models.py

class BlogListingPage(Page):
     blog_listing_title = models.CharField(...)
    ...    
    def get_context(self, request, *args, **kwargs):
        """Add custom content to our context."""
        context = super().get_context(request, *args, **kwargs)
        context['blog_pages'] = BlogDetailPage.objects.live().child_of(self)

        return context

class BlogDetailPage(Page):
    blog_title = models.CharField(...)

推荐阅读