Django CMS从草案中丢失数据直播

时间:2015-03-12 18:12:15

标签: django python-3.x django-templates django-cms

我正在使用filer插件创建一个carousel插件来轻松访问图像。 旋转木马简单地用Bootstrap Carousel制作。

问题是我的轮播在草稿中正确显示但是当我转到现场时,只剩下箭头。

当我尝试使用某些"你好"在模板中这个文件:

      {% load thumbnail %}

    <div id="myCarousel" class="gallery carousel slide" data-ride="carousel" id="CMSBcarouselPlugin_{{ gallery.pk }}">
    <ol class="carousel-indicators">
    {% for image in images %}  
    {% if forloop.first %}
      <li data-target="#myCarousel" data-slide-to="0" class="active">  </li>
    {% else %}
      <li data-target="#myCarousel" data-slide-to="{forloop.counter}"></li>
    {% endif %}
    {% endfor %}
  </ol>

etc.

我只想&#34;你好&#34;在for循环之外显示。

我不明白为什么它在草稿中不起作用。

她是我简单的cms_plugin.py文件:

class BcarouselPlugin(CMSPluginBase):
  model = Bcarousel
  name = _("Bcarousel")
  render_template = "bcarousel_plugin/bcarousel_plugin.html"
  raw_id_fields = ('image',)

  fields = ['title', 'template' ]

  def render(self, context, instance, placeholder):
    context['images'] = instance.image_set.all()
    context['gallery'] = instance
    try:
        loader.get_template('bcarousel_plugin/' + instance.template)
        self.render_template = 'bcarousel_plugin/' + instance.template
    except:
        pass
    return context

  def get_form(self, request, obj=None, **kwargs):
    form=super(BcarouselPlugin, self).get_form(request, obj, **kwargs)
    form.base_fields['template'] = forms.ChoiceField(
        choices=self._get_available_templates(),
        required=False
    )
    return form

  def _get_available_templates(self):
    choices = (('default', _('Bcarousel-Default')),)
    try:
        choices += settings.BCAROUSEL_PLUGIN_TEMPLATES
    except:
        pass
    return choices

plugin_pool.register_plugin(BcarouselPlugin)

如果有人有了想法,那将是无价的。

我提前感谢你

1 个答案:

答案 0 :(得分:1)

您需要在插件模型中实现copy_relationships方法。

发布时,您实际上是在复制模型行。您需要告诉相关模型如何复制其记录并将它们与正确的实例相关联。 CMS允许您定义需要实施的方法 copy_relations

def copy_relations(self, oldinstance):
    for image in oldinstance.image_set.all():
        image.pk = None
        image.plugin = self
        image.save()

Documentation