0

我收到一个奇怪的错误:“ListView”必须定义“queryset”或“model”

这是我的列表视图:

class ProjectListView(ListView):
    template_name = "ProjectList.html"
    model = Project
    context_object_name = "projects"

我对 CreateView 有同样的问题。是否有任何其他信息需要找到解决方案?

如何修复此错误。

4

1 回答 1

0

get_queryset()您必须在每个通用ListView视图中定义一个函数。这就是你告诉 django 你想显示什么对象的方式。

Model不是的项目。它必须设置为模型类。Poll假设您的文件中有一个模型models.py。并且您想使用通用 ListView 显示数据库中的所有民意调查。然后你可以这样写:

model = Poll

这等于这个查询:

Poll.objects.all()

如果你想覆盖它并显示对象,例如上周的发布日期,那么你定义一个get_queryset()带有需要的查询参数:

ProjectListView(generic.ListView):
    # ...
    def get_queryset(self):
       return obj.objects.filter(pub_date__gte=timezone.now() - datetime.timedelta(days=7))

等等。

于 2013-11-11T17:33:59.413 回答