Python 如何强制当前时区中的Django queryset返回日期时间字段?
我有Django型号:Python 如何强制当前时区中的Django queryset返回日期时间字段?,python,django,datetime,Python,Django,Datetime,我有Django型号: class Deal(models.Model): ... created_at = models.DateTimeField(auto_now_add=True) 当queryset在value处创建时,它总是使用tzinfo=向我返回datetime值,如下所示: Deal.objects.filter(id=62).values('created_at') <QuerySet [{'created_at': datetime.datetime
class Deal(models.Model):
...
created_at = models.DateTimeField(auto_now_add=True)
当queryset在value处创建时,它总是使用tzinfo=
向我返回datetime值,如下所示:
Deal.objects.filter(id=62).values('created_at')
<QuerySet [{'created_at': datetime.datetime(2015, 10, 26, 4, 10, 54, 997000, tzinfo=<UTC>)}]>
Deal.objects.filter(id=62).value('created_at')
如何强制queryset返回当前时区中的日期时间值(例如亚洲/胡志明)?在settings.py文件中,更改时区值
TIME_ZONE='Asia/Ho_Chi_Minh'
在settings.py文件中,更改时区值
TIME_ZONE='Asia/Ho_Chi_Minh'
Django始终以UTC格式保存日期时间,并且通常也以UTC格式返回(取决于数据库和数据库适配器设置)。您通常通过使用来选择时区。这会影响很多事情,比如日期时间在模板中的显示方式 如果出于某种原因希望显式转换时区,可以使用。例如:
from django.utils.timezone import localtime
import pytz
tz = pytz.timezone("Asia/Ho_Chi_Minh")
deals_utc = Deal.objects.filter(id=62).values("created_at")
deals_local = {"created_at": localtime(dt, tz) for dt in deals_utc.values()}
Django始终以UTC格式保存日期时间,并且通常也以UTC格式返回(取决于数据库和数据库适配器设置)。您通常通过使用来选择时区。这会影响很多事情,比如日期时间在模板中的显示方式 如果出于某种原因希望显式转换时区,可以使用。例如:
from django.utils.timezone import localtime
import pytz
tz = pytz.timezone("Asia/Ho_Chi_Minh")
deals_utc = Deal.objects.filter(id=62).values("created_at")
deals_local = {"created_at": localtime(dt, tz) for dt in deals_utc.values()}