【发布时间】:2020-10-09 17:58:49
【问题描述】:
我的模型有一个日期字段,我想按过去 7 天过滤模型。
class Count(models.Model):
task = models.ForeignKey(Task, related_name = 'counts', on_delete = models.CASCADE)
start_time = models.DateTimeField(null = True, blank = True)
end_time = models.DateTimeField(null = True, blank = True)
time_spent = models.PositiveIntegerField()
deleted = models.BooleanField(default = False)
class Meta():
ordering = ['accesses']
def __str__(self):
return f'{self.task.department} - {self.accesses.first().user} [{self.time_spent} min]'
def stamped_date(self):
if not self.start_time:
return self.accesses.first().date
return self.start_time
def users(self):
return list(set(map(lambda x: x.user, list(self.accesses.all()))))
我需要过滤过去 7 天内所有具有“stamped_date”的计数。
我试图做什么(在模型中):
def daysBy(self):
return (datetime.now() - self.stamped_date()).days
像这样过滤:
Count.objects.filter(daysBy__let = 7)
但是,datetime.now() 需要一个时区对象,否则会抛出以下错误:
TypeError: can't subtract offset-naive and offset-aware datetimes
我也觉得这可能不是实现我目标的最正确方法,请用更好的方法纠正我。
或者..给我一种插入与 TIME_ZONE 设置相关的时区对象的方法。
【问题讨论】: