django cms通过API删除插件

django cms通过API删除插件,django,django-cms,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,

在我的网站中,我使用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似乎不允许这样做。有没有办法删除或修改现有的插件


提前感谢您的反馈。

我自己刚刚找到了答案


给定CMSPlugin实例,方法
delete\u with_public()
允许删除它。

OP不清楚这与Django CMS的哪个确切版本有关,但有可能
delete()
可能是您需要从插件实例运行的方法,而不是
delete\u with_public()
。在调用一个或其他方法之前,您需要记住调节设置

请查看此注释和后续注释,以获取代码参考:


FWIW,
delete()
是我在Django CMS 3.0.9上的工作方式。

您应该添加您的解决方案作为这个问题的答案,这将使其他人在将来更容易找到。我尝试过,但系统不允许,因为我刚刚创建了我的帐户。@roberto:回答问题(甚至是自己的问题)应该通过添加答案来完成,不更新问题。请阅读。你也可以在这里阅读更多关于回答自己问题的内容:我认为你是对的,因为我发布了我主要使用delete()的答案