2024-04-25 08:16:47 发布
网友
我在一个模型中有一个字段,比如:
class Sample(models.Model): date = fields.DateField(auto_now=False)
现在,我需要按日期范围过滤对象。
如何筛选日期介于1-Jan-2011和31-Jan-2011之间的所有对象?
1-Jan-2011
31-Jan-2011
使用筛选器执行django ranges时,请确保知道使用日期对象与使用日期时间对象之间的区别。__范围在日期上是包含的,但如果使用datetime对象作为结束日期,则如果未设置时间,则该范围将不包含当天的条目。
startdate = date.today() enddate = startdate + timedelta(days=6) Sample.objects.filter(date__range=[startdate, enddate])
返回从开始日期到结束日期的所有条目,包括这些日期的条目。糟糕的例子,因为这是一周后返回的条目,但你得到了漂移。
startdate = datetime.today() enddate = startdate + timedelta(days=6) Sample.objects.filter(date__range=[startdate, enddate])
将丢失24小时的条目,具体取决于日期字段的时间设置。
可以将django's ^{}与^{} objects一起使用:
import datetime samples = Sample.objects.filter(sampledate__gte=datetime.date(2011, 1, 1), sampledate__lte=datetime.date(2011, 1, 31))
使用
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的queryset,您应该考虑使用gt/lt(大于/小于)的his solution。
specified range ends
使用筛选器执行django ranges时,请确保知道使用日期对象与使用日期时间对象之间的区别。__范围在日期上是包含的,但如果使用datetime对象作为结束日期,则如果未设置时间,则该范围将不包含当天的条目。
返回从开始日期到结束日期的所有条目,包括这些日期的条目。糟糕的例子,因为这是一周后返回的条目,但你得到了漂移。
将丢失24小时的条目,具体取决于日期字段的时间设置。
可以将django's ^{} 与^{} objects 一起使用:
使用
或者,如果您只是尝试按月份筛选:
编辑
正如Bernhard Vallant所说,如果您想要一个排除
specified range ends
的queryset,您应该考虑使用gt/lt(大于/小于)的his solution。相关问题 更多 >
编程相关推荐