0

基本的に次のようにレイアウトされたwikiページを開発しています。

1. Page
    Page ID
    Page name
    Has many: Categories

2. Category
    Category ID
    H2 title
    Has many: category items
    Belongs to: Page

3. Category item
    Category item ID
    H3 title
    Body text
    Image
    Belongs to: Category

私がやりたいのは、ページまたはカテゴリをクリックして、要素のどの部分がそれに関連付けられているかを確認することです (たとえば、ページをクリックしたときのカテゴリとカテゴリ項目のリスト)。私は Django の知識を身につけたので、1 つのテンプレートで 2 つのモデルを使用する必要があります。

class PageView(DetailView):
    model = Page
    template_name = 'page.html'

これは、「ビュー ページ」のビュー パーツがどのように見えるかです。2 つのモデルを使用しようとすると、クラッシュします。複数のモデルを使用するにはどうすればよいですか?

4

3 に答える 3

3

クラスベースのビューをオーバーライドする必要がありますget_context_data: #EDIT changed ピリオドをコンマの後に

    def get_context_data(self, **kwargs):
        context = super(PageView, self).get_context_data(**kwargs)
        context['more_model_objects'] = YourModel.objects.all()
        return context

これにより、必要な数のコンテキスト変数を追加できます。

于 2013-10-15T13:54:01.987 に答える
3

次のリンクに例があります: Django Pass Multiple Models to one Template

class IndexView(ListView):
context_object_name = 'home_list'    
template_name = 'contacts/index.html'
queryset = Individual.objects.all()

def get_context_data(self, **kwargs):
    context = super(IndexView, self).get_context_data(**kwargs)
    context['roles'] = Role.objects.all()
    context['venue_list'] = Venue.objects.all()
    context['festival_list'] = Festival.objects.all()
    # And so on for more models
    return context
于 2015-10-14T07:52:31.790 に答える
0

ページで使用される各リンクに固有の URL を与えることを検討してください。これにより、差分モデルでさまざまなビューを使用できます。

于 2013-10-15T14:18:40.163 に答える