Reputation:
Am tryong to create a custom plugin using ckeditor,but while adding this plugin to cms page its shows following errors:
"value errorCannot assign "u''": "Description.description" must be a "Description" instance:"
Following is my models.py and cms_plugin.py file.what is the issue here and thanks in adavance?
models.py:
from cms.models import CMSPlugin
from django.db import models
from ckeditor.fields import RichTextField
from django.utils.translation import ugettext_lazy as _
class Description(CMSPlugin):
description=RichTextField(_('Description'),)
cms_plugins.py:
from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from apps.cmsplugins.models import *
class DescriptionPlugin(CMSPluginBase):
model=Description
name=('Description')
render_template='cms/plugins/description.html'
def render(self,context,instance,placeholder):
print "contexttttttttttttttttttttttttttt"
context.update({
'instance': instance.description,
'object':instance,
'placeholder': placeholder,
})
return context
plugin_pool.register_plugin(DescriptionPlugin)
Upvotes: 1
Views: 1055
Reputation: 2257
I had the same problem, now I solved it successfully just focus on simple steps to implement RichTextBox in Django-cms using (favorite editor) ckeditor:
models.py
from djangocms_text_ckeditor.models import AbstractText
class TipSlide(AbstractText):
pass
cms_plugins.py
from djangocms_text_ckeditor.cms_plugins import TextPlugin
from models import SlideModel, TipSlide
class TipSlidePlugin(TextPlugin):
name = u'Tip Slide Ads'
model = TipSlide
render_template = "slide/tipslide.html"
plugin_pool.register_plugin(TipSlidePlugin)
tipslide.html
<div>
<div class="container">
{{ body|safe }}<!-- The simple plugin -->
</div>
</div>
the result is:
Upvotes: 2
Reputation: 5607
You cannot name your model fields the same as any installed plugins lower- cased model name, due to the implicit one-to-one relation Django uses for subclassed models.
See warning end of "3.5.Storing configuration" section:
http://docs.django-cms.org/en/3.0.1/extending_cms/custom_plugins.html#storing-configuration
Upvotes: 0
Reputation: 6140
I think you have to do this because you dont pass the Description instance inside in the context instance.descripton
toinstance
def render(self,context,instance,placeholder):
print "contexttttttttttttttttttttttttttt"
context.update({
'instance': instance,
'object':instance,
'placeholder': placeholder,
})
return context
Upvotes: 0