Django CMS 将数据从草稿中丢失
Posted
技术标签:
【中文标题】Django CMS 将数据从草稿中丢失【英文标题】:Django CMS losing data from draft to live 【发布时间】:2015-05-15 01:14:45 【问题描述】:我正在使用文件管理器插件创建一个轮播插件以轻松访问图像。 轮播只是使用 Bootstrap Carousel 制作的。
问题是我的轮播在草稿中正确显示,但是当我通过直播时,只剩下箭头。
当我尝试在模板中使用一些“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.
我只能在 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】:您需要在插件模型中实现一个 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
【讨论】:
是的,我检查过这种方式,但它不起作用:(我在 bcarousel 模型类中添加了它但是... 哦,你是对的,我只是做错了。非常感谢你!以上是关于Django CMS 将数据从草稿中丢失的主要内容,如果未能解决你的问题,请参考以下文章