在我的网站中,我正在使用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似乎不允许这样做。有没有办法删除或修改现有的插件?
提前感谢您的所有反馈。
答案 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()
允许删除它。