Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何强制当前时区中的Django queryset返回日期时间字段?_Python_Django_Datetime - Fatal编程技术网

Python 如何强制当前时区中的Django queryset返回日期时间字段?

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

我有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(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()}