/ / Django CMS niestandardowy plugin Error - django, django-models, django-cms

Django CMS niestandardowy plugin Error - django, django-models, django-cms

Am tryong, aby utworzyć niestandardową wtyczkę za pomocą programu ckeditor, ale podczas dodawania tej wtyczki do strony cms wyświetla następujące błędy:

"błąd wartości Nie można przypisać" u "" ":" Opis.danych "musi być instancją" Opis ":"

Poniżej znajduje się mój plik models.py i cms_plugin.py. Co to za problem i dzięki w 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)

Odpowiedzi:

2 dla odpowiedzi № 1

Miałem ten sam problem, teraz udało mi się go rozwiązać skoncentruj się na prostych krokach, aby zaimplementować RichTextBox w Django-cms za pomocą (ulubionego edytora) ckeditora:

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>

wynik to: wprowadź opis obrazu tutaj


0 dla odpowiedzi nr 2

Myślę, że musisz to zrobić, ponieważ nie przekazujesz instancji Description wewnątrz w kontekście instance.descriptondoinstance

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

0 dla odpowiedzi № 3

Nie można nazwać pól modelu tak samo, jak wszystkich zainstalowanych wtyczek nazw modeli z małą literą, ze względu na niejawną relację jeden-do-jednego, którą Django wykorzystuje w przypadku modeli z podklasą.

Zobacz ostrzeżenie na końcu sekcji "Konfiguracja 3.5.Storowanie":

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