Wigtail:我如何用wagtail复制页面实例及其所有属性和方法

时间:2016-09-11 11:43:42

标签: python django-models wagtail

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

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

我有一个django模型,其中的ForeignKey字段名为 institute

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

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

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

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

继承的模型

1 个答案:

答案 0 :(得分:1)

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

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

它接受的参数是:

  • recursive - 如果为true,则复制子页面
  • to - 用于创建新副本的页面(默认为创建现有页面的兄弟)
  • update_attrs - 复制时要更新的字段的字典,例如{'institute': other_institute}
  • copy_revisions - 是否复制修订历史记录
  • keep_live - 是否复制“实时”状态
  • user - 新页面的所有者,出于权限目的