我正在使用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)
如果有人有了想法,那将是无价的。
我提前感谢你
答案 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()