2017-05-01 4 views
-1

を受け入れていない私はurls.pyに次き:ジャンゴ - ジェネリックdetail_viewがOBJECT_LIST

url(r'frameworkslist/(?P<pk>\d+)$', DetailView.as_view(queryset=Category.objects.all().order_by("id"), template_name='home/subcategory.html')) 

そして、私のHTMLテンプレートで:OBJECT_LISTが空だった理由

{% extends "Layout.html" %} 

{% block content %} 

    {{ subcategory.Name }} 
    {% for item in object_list %} 
     <h5> <a href="/search/{{ item.id }}">{{ item.Name }}</a> </h5> 
    {% endfor %} 
    <a href = "/frameworkslist/">Back to framework list</a> 
{% endblock %} 

私は思っていたが、私は次のように私のURLを変更したとき、それは働いた。 (リストビューテンプレートの代わりに DetailView返さ):

url(r'frameworkslist/(?P<pk>\d+)$', ListView.as_view(queryset=Subcategory.objects.all().order_by("id"), template_name='home/subcategory.html')) 

は、それが最初のレコードを返しますDetailViewに変数「モデル=サブカテゴリ」を渡すように思える、注意すべきは(または何べきサブカテゴリテーブルの単一のモデルである)を選択し、それをテンプレートに渡します。ですから、私の質問は2つの部分、つまり2番目の部分です:DetailViewテンプレートへのオブジェクトのコレクションはどのようにしていますか?

答えて

1

DetailViewは単一のオブジェクトの表示に使用され、ListViewはオブジェクトリストです。通常、パターンにはListViewがあり、多くの個々のもの(製品のようなもの)へのリンクがあり、各製品はDetailViewで表示されます。

ListViewは、クエリーセットに変数object_listを自動的に設定するものです。

DetailViewの場合は、提供するクエリセットを受け取り、URL内の変数をget()に1つだけ使用します。あなたの例では、Subcategory.objects.all().order_by("id").get(pk={some number})になります。これはデフォルトで変数objectのテンプレートに与えられます。

Lots more info on class based views here。サイドノートとして


、あなたのテンプレートではなく、ハードURLをコーディングで {% url %} tagを使用する必要があります。