如何在 Django 中按日期范围过滤查询对象?

新手上路,请多包涵

我在一个模型中有一个字段,例如:

 class Sample(models.Model):
    date = fields.DateField(auto_now=False)

现在,我需要按日期范围过滤对象。

如何过滤日期介于 1-Jan-201131-Jan-2011 之间的所有对象?

原文由 user469652 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 394
2 个回答

采用

Sample.objects.filter(date__range=["2011-01-01", "2011-01-31"])

或者,如果您只是想按月过滤:

 Sample.objects.filter(date__year='2011',
                      date__month='01')

编辑

正如 Bernhard Vallant 所说,如果您想要一个排除 specified range ends 的查询集,您应该考虑 他的解决方案,它使用 gt/lt(大于/小于)。

原文由 crodjer 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以将 django 的 filterdatetime.date 对象 一起使用:

 import datetime
samples = Sample.objects.filter(sampledate__gte=datetime.date(2011, 1, 1),
                                sampledate__lte=datetime.date(2011, 1, 31))

原文由 Bernhard Vallant 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题