转换为Localtime django queryset

时间:2017-08-04 07:40:50

标签: python django django-timezone

我在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个对象,但valueExpressionWrapper(F(created))

1 个答案:

答案 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'))