由于某种原因,我的查询集返回的是UTC时间,但是在数据库中,应该获取的时间是本地时间。有人知道为什么会这样吗?谢谢您的帮助
last_checkin_time方法是从数据库获取用户的最后签入时间戳记的方法,现在我只需将它发布在time_delta变量的toggle方法中,这样我就可以看到其获取的值。 (一旦我得到了这个时区的东西,就会知道time_delta将是实际的时间增量)
这里是我的模型经理
class UserActivityManager(models.Manager):
def current(self, user):
current_obj = self.get_queryset().filter(user=user).order_by('-timestamp').first()
return current_obj
def last_checkin_time(self, user):
last_activity_time = self.get_queryset().order_by('-timestamp').filter(user=user, activity="checkin").first()
return last_activity_time
def toggle(self, user):
last_item = self.current(user)
activity = "checkin"
time_delta = None
last_checkin = self.last_checkin_time(user)
if last_item is not None:
if last_item.timestamp <= tz.localize(datetime.datetime.now()):
pass
if last_item.activity == "checkin":
activity = "checkout"
time_delta = last_checkin.timestamp
obj = self.model(
user=user,
activity=activity,
time_delta = time_delta,
)
obj.save()
return obj
这就是我数据库中的表的样子(关注最后几行中的time_delta字段)
编辑:
我还要提到我模型中的timestamp字段设置为auto_now_add = True。 时间戳= models.DateTimeField(auto_now_add = True)
不确定这是否是导致问题的原因
答案 0 :(得分:0)
我需要使用tz.normalize(last_checkin.timestamp),而不是使用tz.localize(last_checkin.timestamp)。似乎因为时间戳已经设置为UTC,所以我需要使用normalize方法而不是localize来更改它