将条件过滤器添加到 ListView Django

Add conditional filter to ListView Django

我有活动清单。使用 ListView 呈现它们。

在models.py

def event_date_time(self):
    event_date_time = datetime.combine(self.event_date, self.event_time)
    return event_date_time

ListView我还有now= datetime.utcnow()

需要向查询集添加过滤器。

if now > event_date_time:
     #don't render that event
else:
     #render

您不能在 Django 过滤中使用模型函数。您应该使用 DateTimeField 将 event_date 和 event_time 存储在一个属性中。然后,在您的 ListView 中,覆盖 'get_queryset' 函数,如下所示:

def get_queryset(self):
    return Event.objects.filter(event_datetime__gte=datetime.now())