How do I filter query objects by date range in Django?

后端 未结 7 1600
执念已碎
执念已碎 2020-11-22 16:02

I\'ve got a field in one model like:

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

Now, I need to filter the obje

7条回答
  •  孤独总比滥情好
    2020-11-22 16:33

    When doing django ranges with a filter make sure you know the difference between using a date object vs a datetime object. __range is inclusive on dates but if you use a datetime object for the end date it will not include the entries for that day if the time is not set.

        startdate = date.today()
        enddate = startdate + timedelta(days=6)
        Sample.objects.filter(date__range=[startdate, enddate])
    

    returns all entries from startdate to enddate including entries on those dates. Bad example since this is returning entries a week into the future, but you get the drift.

        startdate = datetime.today()
        enddate = startdate + timedelta(days=6)
        Sample.objects.filter(date__range=[startdate, enddate])
    

    will be missing 24 hours worth of entries depending on what the time for the date fields is set to.

提交回复
热议问题