1

ドキュメントに従っているので、何が間違っているのかわかりません。ちょっとしたことだと思っています。シナリオは次のとおりです。

プラグインはテキスト スライドショー プラグインです。管理者は、スライドショーのように循環するテキストを追加できます。

モデルは次のとおりです。

class TextSlideshow(CMSPlugin):
    label = models.CharField(max_length=128)
    interval = models.IntegerField(
        default=5000,
        help_text=_('milliseconds between slides. (1000 equals 1 second)'))

    def copy_relations(self, oldinstance):
        for slide in oldinstance.text_slides.all():
            slide.pk = None
            slide.id = None
            slide.text_slide_show = self
            slide.save()

    def __unicode__(self):
        return self.label


class TextSlide(CMSPlugin):
    text_slide_show = models.ForeignKey(TextSlideshow, related_name="text_slides")
    display_value = models.CharField(max_length=128)
    index = models.IntegerField(verbose_name=_("Display order"))

インラインは次のとおりです。

class TextSlideInline(admin.StackedInline):
    model = TextSlide
    fk_name = 'text_slide_show'

プラグインは次のとおりです。

class TextSlideshowPlugin(CMSPluginBase):
    model = TextSlideshow
    name = _("Text Slideshow")
    render_template = "text_slideshow.html"
    inlines = [TextSlideInline,]
    module = _("Slideshow")

    def __init__(self, model=None, admin_site=None):
        super(TextSlideshowPlugin, self).__init__(model=model,
                                                  admin_site=admin_site)
        for inline in self.inlines:
            inline.placeholder = self.placeholder
            inline.page = self.page

    def render(self, context, instance, placeholder):
        slides = instance.text_slides.all().order_by('index')

        context.update({
            'model': instance,
            'placeholder': placeholder,
            'slides': slides
        })
        return context


plugin_pool.register_plugin(TextSlideshowPlugin)

プラグインは問題なく動作しますが、管理者ユーザーがテキスト スライドを次のように追加すると、次のようになります。

テキスト スライドショー プラグイン管理者

私が走るとき

./manage.py cms list plugins
私はこの結果を得ます:
==== Plugin report ==== 

There are 2 plugin types in your database

ERROR : not installed

instance(s): 2

TextSlideshowPlugin model : cmsslideshow.models.TextSlideshow
instance(s): 1

走らない限り

./manage.py cms delete_orphaned_plugins
私のスライドショーは無傷のままで、正常に動作します。

テキストのスライドショー自体は問題ありません。インライン化された要素が孤立しているだけです。

助けてください。

4

1 に答える 1