1

私の見解は次のようになります。

class PageView(DetailView):
    queryset = Page.objects.all()
    template_name = 'page.html'
    def get_context_data(self, **kwargs):
        context = super(PageView, self).get_context_data(**kwargs)
        context['category'] = Category.objects.all()
        context['categoryitem'] = CategoryItem.objects.all()
        return context

テンプレートで指定されたコンテキスト変数を実行しようとすると、別名モデル名+タイトルが出力されます。model.pyで設定したため、タイトルが出力されると思いますが{{ category }}、から他のフィールドにアクセスすることはできません与えられたオブジェクト。他のすべてと同様に空白です。どうすればそれらにアクセスできますか?[<Category: Something not so interesting>]__unicode__(self): return self.titlecategory.id

4

3 に答える 3

2

あなたのコードは次のとおりです。

context['category'] = Category.objects.all()

したがって、次のようになります。

context['categories'] = Category.objects.all()

そしてあなたのテンプレートで:

{% for category in categories %}
  {{ category.name }}
{% endfor %}

テストで得た出力は理にかなっています。

[<Category: Something not so interesting>]

これはエントリが 1 つだけの配列であり、このエントリはクラス Category のオブジェクトであり、その文字列表現は "Something not ..." です。

于 2013-10-16T05:40:07.390 に答える
0

クエリセットであるため、カテゴリを反復処理する必要があります。たとえば、テンプレートで、次のことができます

<ul>
{% for c in category %}
  <li> {{ c }} </li>
{% endfor %}
</ul>
于 2013-10-16T05:41:22.787 に答える
0

categoryテンプレートでは、クエリセット(オブジェクトのリスト)は単一のオブジェクトではありません。次のように繰り返す必要があります

{%for c in category %}
    {{c.id}} : {{ c.other_attribute }}
{%endfor%}
于 2013-10-16T05:41:24.863 に答える