我的要求听起来很简单,但我正在努力让它工作
在我的wagtail项目中,我有一个BlogListingPage,它有许多子页面。我试图在网页中创建一个孩子列表。这是我的密码:
型号.py
class BlogListingPage(Page):
...
def get_context(self, request, *args, **kwargs):
context = super().get_context(request, *args, **kwargs)
context['blog_pages'] = BlogDetailPage.objects.live().child_of(self)
return context
class BlogDetailPage(Page):
...
blog_listing = models.ForeignKey(BlogListingPage,
on_delete=models.PROTECT,
blank=True,
null=True,)
视图.py
def blog(request):
url = 'blog/blog_listing_page.html'
context = {'data': BlogListingPage.objects.all()}
return render(request, url, context)
blog\u listing\u page.html
{% block content %}
{% for blog_listing in data %}
{% for post in blog_listing.blogdetailpage %}
<a href="{% pageurl post %}">{{ post.blog_title }}</a>
{% endfor %}
{% endfor %}
{% endblock content %}
我迷失在django/wagtail页面/objects/querysets/all()/specific的迷雾中
有人能带我去清澈的蓝色水域吗
关于您的方法,有几点建议:
从
BlogDetailPage
到BlogListingPage
拥有外键不是组织父子关系的摇摆方式。所有Page
对象都已经有了树层次结构,您应该依赖它,否则您将丢失Wagtail提供的所有内置树处理您应该使用parent/subpage rules来指定页面类型如何相互关联。在您的情况下,它看起来像:
只有当Wagtail为视图中的特定页面提供服务时,
BlogListingPage
上的get_context()
方法才会运行。当您在blog
视图中迭代这些页面时,它不会运行。为了访问那里的孩子,您需要执行以下操作:也就是说,您需要使用页面上的}在这里并不重要-如果您希望显示作为模型一部分的字段,而不是基本
get_children()
方法来获取它的子级live()
进一步过滤此内容以排除未发布的页面。注意,只有当博客文章是列表页面的子项(在Wagtail页面树的意义上)时,这才有效^如果您只使用post URL和title,{Page
模型,则它是相关的相关问题 更多 >
编程相关推荐