2014-01-24 4 views
1

문서를 읽었을 때 내가 뭘 잘못하고 있는지 알지 못합니다. 나는 그것이 작은 것이다고 생각하고있다. 다음은 시나리오입니다.Django CMS Plugin이 Inline InclusionTag를 사용하여 Orphaned Plugin을 생성합니다.

플러그인은 텍스트 슬라이드 쇼 플러그인입니다. 관리자는 슬라이드 쇼처럼 순환 할 텍스트를 추가 할 수 있습니다. 때

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) 

플러그인 작품과 완벽한 실행되지만 :

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' 

플러그인은

모델

은 다음과 같습니다 관리자는 다음과 같은 텍스트 슬라이드를 추가합니다.

내가
./manage.py cms list plugins
을 실행하면

Text Slideshow Plugin Admin

나는이 결과를 얻을 : 만큼 내가 전술에 남아있을 것입니다

./manage.py cms delete_orphaned_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

.

텍스트 슬라이드 쇼 자체는 문제가 없으며, 고아 인 인라인 요소 일뿐입니다.

도와주세요.

답변

1

설명서를 다시 읽는 동안 여러 번 현미경으로 코드를 검토 한 후 많은 문제를 발견했습니다.

문제는 하위 모델 CMSPlugin하지, models.Model에서 상속해야입니다

변화 :

class TextSlide(CMSPlugin):

에 :

class TextSlide(models.Model):