如何以编程方式发布页面而不创建(新)修订版?

问题描述 投票:0回答:1

我按计划从外部数据源创建/更新 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_child()  or 
add_sibling() 方法保存,这将在保存之前正确设置新页面上的
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)
wagtail
1个回答
0
投票

add_child
是正确的方法,它不会创建修订,只是页面实例本身

© www.soinside.com 2019 - 2024. All rights reserved.