/ Erreur du plugin personnalisé Django CMS - django, django-models, django-cms

Erreur du plugin personnalisé Django CMS - django, django-models, django-cms

Essayez de créer un plugin personnalisé en utilisant ckeditor, mais lors de l’ajout de ce plugin à la page cms, il affiche les erreurs suivantes:

"value errorCannot assign" u "" ":" Description.description "doit être une instance" Description ":"

Voici mon fichier models.py et cms_plugin.py. Quel est le problème ici et merci à Adobe?

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)

Réponses:

2 pour la réponse № 1

J'ai eu le même problème, maintenant je l'ai résolu avec succès Concentrez-vous simplement sur des étapes simples pour implémenter RichTextBox dans Django-cms en utilisant (éditeur favori) 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>

le résultat est: entrer la description de l'image ici


0 pour la réponse № 2

Je pense que vous devez le faire car vous ne passez pas l’instance Description à l’intérieur du contexte instance.descriptonàinstance

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

0 pour la réponse № 3

Vous ne pouvez pas nommer vos champs de modèle de la même manière que tout nom de modèle de plug-in installé avec un casier inférieur, en raison de la relation un-à-un implicite utilisée par Django pour les modèles sous-classés.

Voir l'avertissement à la fin de la section "3.5.Storing configuration":

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