python - 如何在 Django CMS 中复制 PlaceholderField

标签 python django django-cms

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

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

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

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

有人对如何最好地做到这一点有任何建议/想法吗?

感谢您的宝贵时间!

最佳答案

要将插件从 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 是内部的,因此它可以更改:)

关于python - 如何在 Django CMS 中复制 PlaceholderField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207006/

相关文章:

python - DjangoCMS 工具栏缺失

python - Django-cms错误 "unsupported operand type(s) for +: '设置'和 'tuple'“

python - Django-CMS复用插件实例

python - AWS API Gateway 和 Python Lambda 返回 HTML

python - 修改 python 守护进程脚本,停止不会返回 OK(但会杀死进程)

python - 是否可以将多个 TensorFlow 图合并为一个?

python - 如何过滤 Django2 的 autocomplete_fields 中的选择?

python - Django:如何将媒体文件上传到不同的文件夹?

python - Django Channels - Websocket 连接失败

django_filters 自定义方法字段名