我在models.py
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
在settings.py
我有
TIME_ZONE = 'UTC'
USE_TZ = True
我希望在特定的时区得到时间。
现在,如果我致电Blog.objects.all()
,它会以UTC
格式提供所有时间。但是我想要用户时区的时间请求。
我知道有可用的过滤器和标签。但正如我所做的rest_framework
我认为我需要能够在Queryset
中完成。
有任何帮助吗?
编辑:
到目前为止,我已经编写了这样的查询集
from django.utils import timezone
from django.db import models
Blog.objects.annotate(
local_create_time = timezone.template_localtime(models.Expressionwrapper(models.F('created'), output_field=models.DateTimeField(), pytz.timezone('Europe/Madrid'))
)
它没有将数据转换为Europe/Madrid
timzone。但是将数据输出到UTC
时区。
所以我检查了timzone.template_localtime(value, use_tz=None)
定义。
对我而言,use_tz正在传递tzinfo
个对象,但value
为ExpressionWrapper(F(created))
答案 0 :(得分:0)
在python中,你可以通过这种方式在不同的时区获得时间:
from datetime import datetime
from pytz import timezone
time_Madrid=datetime.now(timezone('Europe/Madrid'))
time_UTC=datetime.now(timezone('UTC'))
time_GMT=datetime.now(timezone('Etc/GMT-3'))