2017-01-16 6 views
3

複数のモデルから情報をレンダリングする必要があるテンプレートがあります。このような私のmodels.py見て何か:複数モデルのDjangoテンプレート

# models.py 
from django.db import models 

class foo(models.Model): 
    ''' Foo content ''' 

class bar(models.Model): 
    ''' Bar content ''' 

私も、私はthis Django documentationthe answer given hereに応じて書いて、そこからファイルviews.pyを、持っている、そしてこのようなものになります。

# views.py 
from django.views.generic import ListView 
from app.models import * 

class MyView(ListView): 
    context_object_name = 'name' 
    template_name = 'page/path.html' 
    queryset = foo.objects.all() 

    def get_context_data(self, **kwargs): 
     context = super(MyView, self).get_context_data(**kwargs) 
     context['bar'] = bar.objects.all() 

     return context 

と私をurls.pyのurlpatternsは以下の目的を持っている:

url(r'^path$',views.MyView.as_view(), name = 'name'), 

私の質問はどのように私はFからのオブジェクトとオブジェクトのプロパティを参照することができるテンプレートページ/ path.htmlに、あります私のページにそれらを表示するには?最も簡単な例については

答えて

1

、あなたがコンテキストに含める必要があります:

テンプレートで今
# views.py 
from django.views.generic import ListView 
from app.models import * 
class MyView(ListView): 
    context_object_name = 'name' 
    template_name = 'page/path.html' 
    queryset = foo.objects.all() 

    def get_context_data(self, **kwargs): 
     context = super(MyView, self).get_context_data(**kwargs) 
     context['bars'] = bar.objects.all() 
     context['foos'] = self.queryset 
     return context 

あなたはget_context_dataでコンテキスト辞書を作成するときに使用するキーを参照することによって値にアクセスすることができます:

<html> 
<head> 
    <title>My pathpage!</title> 
</head> 
<body> 
    <h1>Foos!</h1> 
    <ul> 
{% for foo in foos %} 
    <li>{{ foo.property1 }}</li> 
{% endfor %} 
    </ul> 

    <h1>Bars!</h1> 
    <ul> 
{% for bar in bars %} 
    <li>{{ bar.property1 }}</li> 
{% endfor %} 
    </ul> 
</body> 
</html> 
-1

、単に共通のDjangoテンプレート言語構造、forloop -tagと{{}}変数表記を使用します。

{% for b in bar %} # should be called 'bars' in the context, really 
    {{ b }}   # will render str(b) 
    {{ b.id }}   # properties, fields 
    {{ b.get_stuff }} # callables without parentheses 
{% endfor %} 

は、より多くのためにtemplate language docsを参照してください。お使いのテンプレートからFOOSにアクセスするには

関連する問題