何时在ListView

时间:2017-10-01 20:27:26

标签: django

我在模型中定义了一个Horario类,我的模板目录中有一个horario_list.html。 如果我定义这个类,一切正常:

class HorariosView(generic.ListView):
    model = Horario

    def get_queryset(self):
        return Horario.objects.all()

但是,如果我按列表更改返回类型,例如

class HorariosView(generic.ListView):
    model = Horario

    def get_queryset(self):
        return list(Horario.objects.all())

我收到例外TemplateDoesNotExist

现在,如果我在课堂上添加template_name属性,一切都会再次起作用:

class HorariosView(generic.ListView):
    model = Horario
    template_name = 'horario_list.html'

    def get_queryset(self):
        return list(Horario.objects.all())

何时以及为何需要template_name

1 个答案:

答案 0 :(得分:1)

如果有真正的查询集,Django会询问它的model属性,并根据该模型名称构建模板名称;见the code。但是,列表没有model属性,因此Django无法确定应该调用模板的内容。

注意,无论如何,你真的不应该从get_queryset方法返回除查询集之外的任何内容。