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 知识时,这需要我在一个模板上使用两个模型。

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

这就是我的“查看页面”视图部分的样子,当我尝试使用两个模型时,它崩溃了。我可以做些什么来使用多个模型?

4

3 回答 3

3

您需要覆盖get_context_data基于类的视图:#EDIT 在 self 之后将句点更改为逗号

    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 回答