Django ClassBasedViews - 通用视图

时间:2013-11-11 17:18:03

标签: django django-class-based-views

我得到一个奇怪的错误:'ListView'必须定义'queryset'或'model'

这是我的ListView:

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

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

如何解决此错误。

1 个答案:

答案 0 :(得分:0)

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

Model 您的项目。必须将其设置为模型类。 比如,您的Poll文件中有一个名为models.py的模型。并且您希望使用通用ListView显示数据库中的所有轮询。然后你可以这样写:

model = Poll

这等于此查询:

Poll.objects.all()

如果你想覆盖它并显示对象,例如在上周的发布日期,然后您使用nedeed查询参数定义get_queryset()

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

等等。