2017-07-25 9 views
0

djangoモデルのクラスへの取得方法BlogPageGalleryImage画像または外部キーまたはペアレントキーの別の値は?Django他のモデルから値をモデル化する方法

class BlogPage(Page): 
    date = models.DateField("Дата публикации" , default=datetime.date.today ) 
    body = RichTextField(blank=True) 
    name = models.CharField(max_length=80, default='Лучший') 



class BlogPageGalleryImage(Orderable): 
    page = ParentalKey(BlogPage, related_name='gallery_images') 
    image = models.ForeignKey('wagtailimages.Image', on_delete=models.CASCADE, related_name='+') 
    caption = models.CharField(blank=True, max_length=250) 
    panels = [ 
     ImageChooserPanel('image'), 
     FieldPanel('caption'), 
    ] 

class Another(BlogPage): 
    page = ParentalKey(BlogPage, related_name='instagram_post') 
    Image = BlogPageGalleryImage.objects.get(BlogPageGalleryImage.) 
    caption = models.CharField(blank=True, max_length=250) 
    panels = [ 
     ImageChooserPanel('image'), 
     FieldPanel('caption'), 
    ] 
+0

もっと具体的な質問がありますか? – zaidfazil

+0

'Another'モデルの' BlogPageGalleryImage'から 'Image'を保存したい場合、' save() 'メソッドを上書きしてこれを実現することができます。 – Bijoy

+0

Another.Imageフィールドのデフォルトを設定しますか?どのように使用したいかの例を挙げておけば役に立ちます。 – swalladge

答えて

1

あなたのBlogPageAnotherテンプレートでブログのページの画像にアクセスしようとしているようです。これは、ブログページ画像をレンダリングコンテキストに追加することによって達成することができる。これはget_contextBlogPageのメソッドオーバーライドするためには:

def get_context(self, request, *args, **kwargs): 
    context = super(BlogPage, self).get_context(
     request, *args, **kwargs 
    ) 
    context['images'] = BlogPageGalleryImage.objects.filter(
     page=self, 
    ) 
    return context 

する。これは、あなたが今、あなたのテンプレートで{{ images }}を使用して画像にアクセスできることを意味します。したがって、たとえば:

{% for i in images %} 
    <div class="image"> 
     {% image i.image %} 
     <p>{{ i.caption }}</p> 
    </div> 
{% endfor %} 
+0

に割り当てられている現在のBlogPageGalleryImageにフィルタリングするのかを理解していますが、テンプレートではありませんが、私はモデルでそれをすると思っていましたが、philisophyの方法はありません。管理インターフェースでこれをどのように行うことができますか? wagtailでは、私は通常ビューを登録しますが、ここでは十分ではありません。 – Mihail

+0

悪いことに、私はあなたの質問を誤解しているに違いありません。 'BlogPage'と' Another'の 'panels'定義に' InlinePanel( 'gallery_images') 'を追加しようとしましたか? – Dekker

+0

はい私は試みましたが、私はDBからの情報を見ていません。私はページを開き、他の外国のモデルからの値を参照したいと思います。私は間違った方向に行くと思う。 – Mihail

関連する問題