Wagtail:如何在 wagtail 中复制页面实例及其所有 属性 和方法

Wagtail: How can I copy a page instance in wagtail with all its property and method

我在 Wagtail 网站上有一个 CoursePage 模型。

class CoursePage(Page):
    .....
    institute = models.ForeignKey(Institute)
    .....

我有一个名为 institute

的 django 模型 ForeignKey 字段

我想以编程方式复制其实例,以便可以修改新创建的实例 institute 字段。

我尝试了复制模型实例的django方法,即:

course = CoursePage.objects.all()[0]
course.pk = None
course.save()

但是没有成功。 它仅适用于 django models.Model 继承的模型。但不是继承自 Page

的模型

Page 模型实现了一个 copy 方法来执行此操作:

def copy(self, recursive=False, to=None, update_attrs=None,
         copy_revisions=True, keep_live=True, user=None):

它接受的参数是:

  • recursive - 如果为真,也复制子页面
  • to - 创建新副本的页面(默认创建现有页面的兄弟页面)
  • update_attrs - 复制时要更新的字段字典,例如 {'institute': other_institute}
  • copy_revisions - 是否复制修订历史
  • keep_live - 是否复制'live'状态
  • user - 新页面的所有者,出于许可目的