如何在 Django CMS 中复制 PlaceholderField
How to copy a PlaceholderField in Django CMS
我们在我们的网站上使用 Django CMS,并在自定义模型上使用 PlaceholderField。
我希望将草稿/定时编辑添加到使用 PlaceholderField 的自定义模型。
但作为其中的一部分,我需要能够复制 PlaceholderField。
我看到这在网络界面中是可行的,并尝试使用 PlaceholderAdminMixin class 和它的 copy_plugins 方法,但它看起来与网站太相关了 (运行 伪造 'admin_site' 变量的问题 :) 我需要在网络之外 interface/just 在代码中执行此操作。
有人 suggestions/thoughts 知道如何最好地做到这一点吗?
感谢您的宝贵时间!
要将插件从 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
是内部的,因此它可以更改 :)
我们在我们的网站上使用 Django CMS,并在自定义模型上使用 PlaceholderField。
我希望将草稿/定时编辑添加到使用 PlaceholderField 的自定义模型。
但作为其中的一部分,我需要能够复制 PlaceholderField。
我看到这在网络界面中是可行的,并尝试使用 PlaceholderAdminMixin class 和它的 copy_plugins 方法,但它看起来与网站太相关了 (运行 伪造 'admin_site' 变量的问题 :) 我需要在网络之外 interface/just 在代码中执行此操作。
有人 suggestions/thoughts 知道如何最好地做到这一点吗?
感谢您的宝贵时间!
要将插件从 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
是内部的,因此它可以更改 :)