我按计划从外部数据源创建/更新 Wagtail 页面。目前,Wagtail 页面实例通过以下方式发布:
page_obj.save_revision().publish()
这是可行的,但似乎每次发布这些页面实例之一时,都会创建一个新的修订版 - 在这种特定情况下我不希望/不需要这些修订版对象。
省略
save_revision()
结果为 Page.publish() missing 1 required positional argument: 'revision'
。
如何以编程方式发布 Wagtail 页面实例而无需修改?
add_child()
和 save()
?我的第二个最佳解决方案是为新页面实例调用
add_child()
,这似乎设置了 live=True
页面属性并因此“发布”页面。创建了初始修订,但在进一步 page_obj.save()
调用现有页面时,不会创建其他修订。
提示https://github.com/wagtail/wagtail/blob/main/wagtail/models/__init__.py#L1413:
新页面通常应通过现有页面的
add_sibling() 方法保存,这将在保存之前正确设置新页面上的add_child() or
和path
字段。depth
这似乎完成了工作,但我不知道这是否是推荐的方法:
try:
page_obj = PageModel.objects.get(...)
page_obj.save()
except PageModel.DoesNotExist:
page_obj = PageModel()
parent_page = ...
parent_page.add_child(instance=page_obj)
add_child
是正确的方法,它不会创建修订,只是页面实例本身