Python 如何筛选datetime字段上的对象?

Python 如何筛选datetime字段上的对象?,python,django,python-2.7,Python,Django,Python 2.7,我有以下型号: class Announcement(models.Model): name = models.CharField(max_length=500) content = models.CharField(max_length=1000) is_active = models.BooleanField(default=False) date_start = models.DateTimeField() date_end = models.Dat

我有以下型号:

class Announcement(models.Model):
    name = models.CharField(max_length=500)
    content = models.CharField(max_length=1000)
    is_active = models.BooleanField(default=False)
    date_start = models.DateTimeField()
    date_end = models.DateTimeField()

    def __str__(self):
        return self.name
我可以在
是否处于活动状态
字段中过滤对象,如:

def announcements(request):
    announcements = Announcement.objects.all().filter(
        is_active = True
    )
    return HttpResponse(
        serializers.serialize("json", announcements))
这个很好用。但是当我想根据
date\u start
字段过滤它们时,如下所示:

def announcements(request):
    announcements = Announcement.objects.all().filter(
        date_start >= datetime.now()
    )
    return HttpResponse(
        serializers.serialize("json", announcements))
我得到的
全局名称“date\u start”未定义
错误

您需要使用过滤器查找:

此语法错误:

announcements = Announcement.objects.all().filter(date_start >= datetime.now())
filter
需要Python关键字参数。所以实际上你可以:

announcements = Announcement.objects.all().filter(date_start__gte=datetime.now())
关于这方面的更多信息。

在使用filter()之前,不需要调用.all(),因为filter()被代理到queryset。
announcements = Announcement.objects.all().filter(date_start__gte=datetime.now())