Django CMS 从草稿到实时丢失数据
Django CMS losing data from draft to live
我正在使用文件管理器插件创建轮播插件以轻松访问图像。
旋转木马只是用 Bootstrap Carousel.
制作的
问题是我的旋转木马在草稿中显示正确,但当我通过 live 时,只剩下箭头。
当我尝试使用模板中的某些 "hello" 进行调试时,此文件:
{% 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.
我只能算出"hello"在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)
如果有人有想法,那将是无价之宝。
先谢谢你了
您需要在您的插件模型中实现一个 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()
我正在使用文件管理器插件创建轮播插件以轻松访问图像。 旋转木马只是用 Bootstrap Carousel.
制作的问题是我的旋转木马在草稿中显示正确,但当我通过 live 时,只剩下箭头。
当我尝试使用模板中的某些 "hello" 进行调试时,此文件:
{% 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.
我只能算出"hello"在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)
如果有人有想法,那将是无价之宝。
先谢谢你了
您需要在您的插件模型中实现一个 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()