【发布时间】:2015-01-23 05:24:27
【问题描述】:
我有一个简单的自定义 djangocms 插件,它在发布更改时行为异常。
完整代码在这个 repo 中:https://github.com/creimers/djangocms_sociallist
这是模型:
class SocialList(CMSPlugin):
name = models.CharField(
'Liste',
blank=False,
default='',
max_length=32,
)
def copy_relations(self, oldinstance):
for associated_item in oldinstance.associated_item.all():
associated_item.pk = None
associated_item.plugin = self
associated_item.save()
def __unicode__(self):
return u'%s' % self.name
class SocialIcon(models.Model):
choices = (
('fa-facebook', 'facebook'),
('fa-google-plus', 'google-plus'),
('fa-twitter', 'twitter'),
('fa-instagram', 'instagram'),
('fa-yelp', 'yelp'),
('fa-youtube-play', 'youtube'),
('fa-foursquare', 'foursquare'),
)
social_list = models.ForeignKey(
SocialList,
related_name="associated_item"
)
icon = models.CharField(
max_length=200,
blank=False,
choices=choices,
)
link = models.URLField(
max_length=200,
blank=False
)
def __unicode__(self):
return u'%s' % self.icon
这是cms_plugins.py:
class ChoiceInline(admin.TabularInline):
model = SocialIcon
extra = 1
class SocialPlugin(CMSPluginBase):
name = u'Social Icons'
model = SocialList
render_template = "djangocms_sociallist/_social_plugin.html"
#form = SocialListPluginAdminForm
inlines = [ChoiceInline, ]
def render(self, context, instance, placeholder):
items = instance.associated_item.all()
context.update({
'items': items,
'instance': instance,
})
return context
plugin_pool.register_plugin(SocialPlugin)
这是模板:
<div class="social-list-container">
<ul class="social-list">
{% for icon in items %}
<a href="{{icon.link}}">
<li class="social-list-item">
<i class="fa {{icon.icon}}"></i>
</li>
</a>
{% endfor %}
</ul>
</div>
在草稿模式下,一切正常。当我点击“发布更改”时会发生奇怪的事情。
这是草稿模式。我添加了三个图标。图标列表称为“测试”,可以在左侧管理边栏中看到。
然后,切换到“实时”后,图标不显示。此外,管理面板中的“测试”列表已重复。
切换回'draft',插件模板中呈现两个同名列表。
诚然,对于 django(cms) 及其概念来说是新手,我不太清楚该怎么做。有人有想法吗?
【问题讨论】:
标签: python-2.7 plugins django-cms django-1.6