问题描述
我们在网站上使用Django CMS,并在自定义模型上使用PlaceholderField。
我想将草稿/定时编辑添加到使用PlaceholderField的自定义模型中。
但是,为此,我需要能够复制PlaceholderField。
我在Web界面中看到了这种可能,并尝试使用PlaceholderAdminMixin类及其copy_plugins方法,但是它似乎与网站过于紧密(遇到了伪造'admin_site'变量的问题:)我需要这样做在网络界面之外/仅在代码中。
任何人都对如何最好地做到这一点有任何建议/想法?
谢谢你的时间!
1楼
要将插件从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
是内部的,所以它可以更改:)