动态更改 ListView(按天)

Dynamically Changing a ListView (by day)

我有一个 ListView(通用 CBV)事件。此 ListView 应每天动态更新,以便 "old" 事件(即已经发生的事件)在用户访问该页面时从 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'

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

您应该覆盖 get_queryset() 方法:

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