1

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

提前感谢您的所有反馈。

4

2 回答 2

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 上对我有用

于 2015-01-23T10:10:43.623 回答
1

我自己找到了答案。

给定 CMSPlugin 实例,该方法delete_with_public()允许删除它。

于 2013-06-08T06:10:07.893 回答