如何在Django CMS中复制PlaceholderField

时间:2017-02-13 14:55:33

标签: python django django-cms

我们在我们的网站上使用Django CMS,并在自定义模型上使用PlaceholderField。

我希望将草稿/定时编辑添加到使用PlaceholderField的自定义模型。

但作为其中的一部分,我需要能够复制PlaceholderField。

我在Web界面中看到这是可能的,并尝试使用PlaceholderAdminMixin类及其copy_plugins方法,但它看起来与网站过于紧密(遇到了伪造问题的问题)。 admin_site'变量:)我需要在Web界面之外/仅在代码中执行此操作。

任何人对如何做到这一点都有任何建议/想法?

谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

要将插件从PlaceholderField复制到另一个占位符,您可以执行以下操作:

from cms.utils.copy_plugins import copy_plugins_to


class YouModel(models.Model):
    content = PlaceholderField('content')


instance = YourModel.objects.get(pk=1)

# language can be none if you want to copy all plugins regardless
# of language
plugins = instance.content.get_plugins_list(language=language)

# target_placeholder is a placeholder instance
copy_plugins_to(plugins, target_placeholder, no_signals=True)

请记住copy_plugins_to是内部的,因此可以更改:)