2016-11-07 26 views
1

Django/Django-CMSで自分のプロジェクト用のカスタムプラグインを作成しましたが、そのプラグインはページにプラグインを追加するときにユーザーが選んだ声状のリストを持っています。私は私のページで証言をSEことができると私はエラーなしで公開することができますが、私は公開したページを見ると証言が表示されません編集モードで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) 

:モデルがこれです。プラグインテンプレートはレンダリングされていますが、picked_testimonialsは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

関連する問題