我收到一个奇怪的错误:“ListView”必须定义“queryset”或“model”
这是我的列表视图:
class ProjectListView(ListView):
template_name = "ProjectList.html"
model = Project
context_object_name = "projects"
我对 CreateView 有同样的问题。是否有任何其他信息需要找到解决方案?
如何修复此错误。
我收到一个奇怪的错误:“ListView”必须定义“queryset”或“model”
这是我的列表视图:
class ProjectListView(ListView):
template_name = "ProjectList.html"
model = Project
context_object_name = "projects"
我对 CreateView 有同样的问题。是否有任何其他信息需要找到解决方案?
如何修复此错误。
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))
等等。