动态更改ListView(按天)

时间:2015-02-25 09:20:12

标签: django django-class-based-views django-generic-views

我有ListView(通用CBV)事件。此ListView应每天动态更新,以便在用户访问网页时从context排除“旧”事件(即已发生的事件)。

我刚注意到此页面实际上并未按预期运行(需要重新启动服务器才能使ListView更新)。我怀疑这是因为我正在使用queryset方法,而且我应该更早地进行处理:

class EventDirectoryView(ListView):
    model = Event
    # Exclude objects that are expired
    queryset = Event.objects.exclude(deadline__lt=(date.today()-timedelta(1)))
    template_name = 'event-directory.html'

为了达到我想要的结果,我应该最早修改查询集,以便每次加载页面时都运行它?

1 个答案:

答案 0 :(得分:1)

您应该覆盖get_queryset()方法:

class EventDirectoryView(ListView):
    ...
    def get_queryset(self):
        return Event.objects.exclude(deadline__lt=(date.today()-timedelta(1)))