【问题标题】:django-cms remove plugin via APIdjango-cms 通过 API 移除插件
【发布时间】:2013-06-07 18:41:07
【问题描述】:

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

提前感谢您的所有反馈。

【问题讨论】:

  • 你应该添加你的解决方案作为这个问题的答案,这样以后其他人更容易找到。
  • 我试过了,但系统不允许我,因为我刚刚创建了我的帐户。
  • @roberto:回答问题(甚至是自己的问题)应该通过添加答案来完成,而不是更新问题。请阅读faq。您还可以在此处阅读有关回答自己问题的更多信息:blog.stackoverflow.com/2011/07/…

标签: django django-cms


【解决方案1】:

从 OP 中不清楚这与哪个确切版本的 Django-CMS 相关,但 delete() 可能 可能是您需要从插件实例运行的方法,而不是 @ 987654323@。在调用其中一种或另一种方法之前,您需要记住适度设置。

查看此评论和后续 cmets 以获取对代码的引用:https://github.com/divio/django-cms/issues/562#issuecomment-488327

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

【讨论】:

  • 我认为你是对的,因为我发布了我主要使用 delete() 的答案
【解决方案2】:

我自己找到了答案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2021-03-09
    • 2014-11-25
    • 2013-09-09
    • 2011-06-23
    相关资源
    最近更新 更多