【发布时间】:2019-09-06 14:30:58
【问题描述】:
我有一个插件 (PodcastPlugin),其中包含两个 ManyToManyField(podcast 和 custom_podcast)。我想创建一个 Django 命令,在同一页面上创建一个新插件,并使用旧实例创建一个占位符。 [![老插件截图] 我可以创建一个新插件,但它不会将 podcast 和 custom_podcasts 的旧实例复制到新创建的 PodcastPlugin 中。 这是我的代码:
from cms.models.pagemodel import Page
from cms.api import add_plugin
for page in Page.objects.all():
for placeholder in page.placeholders.filter(page=263):
for plugin in placeholder.get_plugins_list():
if plugin.plugin_type == 'PodcastPlugin':
for custom_ids in plugin.get_plugin_instance()[0].custom_podcasts.values_list('id'):
for podcasts_ids in plugin.get_plugin_instance()[0].podcasts.values_list('id'):
add_plugin(
placeholder=placeholder,
plugin_type='PodcastPlugin',
podcasts=[podcasts_ids[0]],
cmsplugin_ptr_id=plugin.id,
custom_podcasts=[custom_ids[0]],
title='New Podcast',
language='de'
)
【问题讨论】:
-
查看docs中
add_plugin的签名,看来你可能违反了函数的签名。language是一个 reguar arg,而插件数据应该是最后一个 kwargs。 -
谢谢,但我找到了解决方案
标签: python django python-2.7 django-cms django-management-command