/ / Django CMS custom plugin Erro - django, django-models, django-cms

Plugin personalizado do Django CMS Error - django, django-models, django-cms

Estou tentando criar um plugin personalizado usando o ckeditor, mas ao adicionar este plugin para a página cms mostra seus seguintes erros:

"value errorCannot assign" u "" ":" Description.description "deve ser uma instância de" Descrição ":"

A seguir está meu arquivo models.py e cms_plugin.py.que é o problema aqui e obrigado em antecipação?

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)

Respostas:

2 para resposta № 1

Eu tive o mesmo problema, agora eu resolvi com sucesso apenas foque em passos simples para implementar o RichTextBox no Django-cms usando o editor (editor favorito):

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>

o resultado é: insira a descrição da imagem aqui


0 para resposta № 2

Eu acho que você tem que fazer isso porque você não passa a instância Description dentro do contexto instance.descriptonparainstance

def render(self,context,instance,placeholder):
print "contexttttttttttttttttttttttttttt"
context.update({
"instance": instance,
"object":instance,
"placeholder": placeholder,
})
return context

0 para resposta № 3

Você não pode nomear seus campos de modelo da mesma forma que qualquer nome de modelo lower-cased de plugins instalados, devido à relação implícita de um-para-um que o Django usa para modelos de subclasses.

Veja o final do aviso da seção "3.5.Storing configuration":

http://docs.django-cms.org/en/3.0.1/extending_cms/custom_plugins.html#storing-configuration