Django 时区不会记录用户的时区

问题描述

所以我刚刚部署了一个 django 网络应用,但令我惊讶的是,它记录了所有带有 UTC +0 的时间对象。他们都!不管用户timezone

我在设置中有 USE_TZ = True。这是我要插入时间的地方。

模型.py

class Timesheet(models.Model):
  ....
    start_date = models.DateTimeField(default=timezone.Now)
  ....

   def save(self,*args,**kwargs):
       entry = Timesheet.objects.filter(id=self.request.user)
       if entry.exists():
           Timesheet.objects.filter(id=self.request.user).update(end_date=timezone.Now())
           ...
       super().save(*args,**kwargs)

如何让它使用美国各地用户的时区?

解决方法

您需要使用 localtime(now()) 而不是 timezone.now()

from django.utils.timezone import localtime,now
localtime(now())