首页 > 解决方案 > 如何将 DateTimeField 与 timezone.now() 进行比较

问题描述

我是 python/django 的新手,我有一个 Events 应用程序,用户可以在其中查看组织即将发生的事件,但我不知道如何只显示未来的事件而忽略过去的事件。

模型.py

class Event(models.Model):
    title = models.CharField(max_length=500)
    description = RichTextField()
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
    created_date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(NewUser, on_delete=models.CASCADE)

视图.py

class ShowEventsListPageView(ListView):
    model = Event
    template_name = 'registration/user_events.html'

    def get_queryset(self, *args, **kwargs):
        user = self.kwargs['pk']
        return Event.objects.filter(author=user).annotate(Event.end_date > timezone.now()).order_by('-start_date')

此代码在“DeferredAttribute”和“datetime.datetime”实例之间返回“>”不支持

标签: pythondjango

解决方案


大于 (gt)查找用于过滤字段大于值的查询集

Event.objects.filter(
    author=user,
    end_date__gt=timezone.now()
).order_by('-start_date')

推荐阅读