2016-12-07 42 views
0

我试图创建一个Django CMS自定义插件,可以组装其他插件。 据我所知,Django CMS可以使用插件嵌套来实现这一点,并且我已经按照示例创建了一个简单的测试用例。Django CMS插件嵌套---子不显示在“结构”接口

我的期望是当你进入包含父插件的PlaceholderField的模型中的记录的“结构”选项卡时,当添加父插件时,该模型的弹出窗口还应该有一些编辑/创建/添加子插件实例的方法。但它并没有---我看到的只是父插件的字段而没有关于孩子的字段(请参见下面的截图)。

或者我完全错过了插件嵌套的要点?

models.py:

from django.db import models 
from cms.models import CMSPlugin 
from cms.models.fields import PlaceholderField 
from djangocms_text_ckeditor.models import AbstractText 

class CustomPlugin(CMSPlugin): 
    title = models.CharField('Title', max_length=200, null=False) 
    placeholder_items = PlaceholderField ('custom-content') 
    renderer = models.CharField('Renderer', max_length=50, null=True, blank=True, 
     help_text='This is just to show that a custom renderer CAN be done here!') 

class ChildTextPlugin(AbstractText): 
    pass 

cms_plugins.py:

from cms.plugin_base import CMSPluginBase 
from cms.plugin_pool import plugin_pool 
from django.utils.translation import ugettext as _ 
from .models import CustomPlugin, ChildTextPlugin 

class CMSCustomPlugin(CMSPluginBase): 
    model = CustomPlugin 
    name = _('Custom Plugin') 
    render_template = 'custom/custom_plugin.html' 
    allow_children = True 

    def render(self, context, instance, placeholder): 
     context = super(CMSCustomPlugin, self).render(context, instance, placeholder) 
     return context 

class CMSChildTextPlugin(CMSPluginBase): 
    model = ChildTextPlugin 
    name = _('Child Text Plugin') 
    render_template = 'custom/child_text_plugin.html' 
    parent_classes = ['CMSCustomPlugin',] 

    def render(self, context, instance, placeholder): 
     context = super(ChildTextPlugin, self).render(context, instance, placeholder) 
     return context 

plugin_pool.register_plugin(CMSCustomPlugin) 
plugin_pool.register_plugin(CMSChildTextPlugin) 

Shouldn't there be an interface somewhere that can access ChildTextPlugin ???

回答

0

...答案是 “这是所有的工作时间” 的---界面出现后,我上面张贴的屏幕被提交---自定义插件条目将有一个“+”图标,它是在那里找到了孩子。