Wagtail 6.1 PageListingViewSet:如何自动选择父页面创建新闻项
解决Wagtail 6.1中创建NewsItem自动指定父页面的问题
你可以通过重写NewsItemViewSet的get_add_url方法,自动将唯一的NewsIndexPage实例ID作为参数附加到创建URL中,让Wagtail直接跳过父页面选择步骤,进入新闻项的编辑界面。
具体实现代码如下:
from wagtail.contrib.modeladmin.views import PageListingViewSet from .models import NewsItem, NewsIndexPage class NewsItemViewSet(PageListingViewSet): model = NewsItem menu_label = "News Items" icon = "list-ul" add_to_admin_menu = True def get_add_url(self): # 获取唯一的新闻索引页实例 news_index = NewsIndexPage.objects.first() if news_index: # 将父页面ID作为参数拼接至创建URL return f"{super().get_add_url()}?parent_page_id={news_index.id}" # 若暂未创建新闻索引页(按配置应不存在此场景),返回默认创建URL return super().get_add_url()
原理说明
Wagtail的页面创建表单会识别URL中的parent_page_id参数,自动将该ID对应的页面设为父页面,无需手动选择。由于你已通过max_count=1限制了NewsIndexPage只能有一个实例,objects.first()即可稳定获取到目标父页面。
内容的提问来源于stack exchange,提问作者Brylie Christopher Oxley
相关产品推荐
相关产品推荐

