2016-11-07 76 views
1

我在Django/Django-CMS中爲我的項目創建了一個自定義插件,並且該插件具有用戶在將插件添加到頁面時選擇的推薦列表。該模型是這樣的:Django-CMS自定義插件未在已發佈頁面中顯示數據

class TestimonialsPlugin(CMSPlugin): 
    n_testimonials = models.PositiveIntegerField(
     verbose_name=_('Number of Testimonials'), default=5) 

    speed_autoplay = models.PositiveIntegerField(
     verbose_name=_('Speed of slider (milliseconds)'), default=3000) 

    picked_testimonials = models.ManyToManyField(Testimonials, 
               verbose_name=_('picked_testimonials'), 
               blank=True, null=True) 

在編輯模式下,我可以在本質上我的網頁的見證,我可以沒有錯誤發佈,但是當我看到發佈頁面的見證不顯示。插件模板正在渲染,但是拾取的東西給出了None。這裏是模板:

<div class="max-width1440 block clearfix relative"> 
    <div class="small-only-text-left small-12 small-offset-0 medium-text-center medium-offset-1 medium-10 large-offset-1 large-10 column pt-px60 pb-px40 pl-px40 pr-px40 slider-testimonials"> 
     {% for testimonial in instance.picked_testimonials.all %} 
      {% if forloop.counter0 < instance.n_testimonials %} 
       <div class="slider column"> 
        <blockquote class="acta_mediumitalic size36 pl-px80 pr-px80 line-height140"> 
         {% render_model testimonial "description" %} 
        </blockquote> 

        <div class="mt-px30"> 
         <p class="acta_book size20 softblack">{{ testimonial.author }},<span>{{ testimonial.city }}</span> 
         </p> 
        </div> 
       </div> 

      {% endif %} 
     {% endfor %} 
    </div> 
</div> 

回答

3

當頁面發佈後,創建插件的副本 - 這不包括插件的領域,但沒有任何關係。有一個在CMS一項規定,出於這樣的目的提供複製方法,請參見例如,從documentation

class ArticlePluginModel(CMSPlugin): 
    title = models.CharField(max_length=50) 
    sections = models.ManyToManyField(Section) 

    def copy_relations(self, oldinstance): 
     self.sections = oldinstance.sections.all() 

最重要的一點是copy_relations,這就保證了新的對象具有相同的關係鏈接。

在你的情況,這些方針的東西應該工作:

class TestimonialsPlugin(CMSPlugin): 
    n_testimonials = models.PositiveIntegerField(
     verbose_name=_('Number of Testimonials'), default=5) 

    speed_autoplay = models.PositiveIntegerField(
     verbose_name=_('Speed of slider (milliseconds)'), default=3000) 

    picked_testimonials = models.ManyToManyField(Testimonials, 
               verbose_name=_('picked_testimonials'), 
               blank=True, null=True) 

    def copy_relations(self, oldinstance): 
     self.picked_testimonials = oldinstance.picked_testimonials.all() 
+0

謝謝:d是工作,解決我的問題。 – patricia

+1

很高興我可以幫助並享受與Django CMS合作! – petr

相關問題