django-cms通过API删除插件

时间:2013-06-07 18:41:08

标签: django django-cms

在我的网站中,我正在使用django-cms(当时使用2.4.3,现在使用3.0.13)API在背景中创建页面,例如,当创建新部门时。

        from cms.api import create_page, add_plugin

        instance.page = create_page(
            title=instance.name,
            language='en',
            published=True,
            template='template.html',
        )
        placeholder_header = instance.page.placeholders.get(slot='header_img')
        add_plugin(
            placeholder=placeholder_header,
            plugin_type='SomeRandomPlugin',
            language='en',
            department=instance,
        )
        publish_page(page=instance.page, user=User.objects.filter(is_superuser__exact=True).latest('pk'))
        # [...]

当我想创建页面时,这可以正常工作。但是当我想修改它时,我首先需要删除现有插件,然后使用新值再次创建它。但官方API似乎不允许这样做。有没有办法删除或修改现有的插件?

提前感谢您的所有反馈。

2 个答案:

答案 0 :(得分:2)

从OP中可以看出Django-CMS的确切版本与此有关,但delete() 可能可能是您需要的方法从插件实例运行,而不是delete_with_public()。在调用一种或另一种方法之前,您需要记住熊的审核设置。

请查看此评论以及对代码参考的后续评论:https://github.com/divio/django-cms/issues/562#issuecomment-488327

FWIW,delete()在Django-CMS 3.0.9上对我有用

答案 1 :(得分:1)

我自己就找到了答案。

鉴于CMSPlugin实例,方法delete_with_public()允许删除它。