我想從表中檢索最後n小時的行並在給定時區中打印它們的日期時間,給出打印日期時要使用的時區,我試圖使用激活以使django返回具有適當時區的日期時間,但它將以UTC的形式返回日期。在Django查詢中返回datetimes時間
這裏是我當前的代碼:
min_time = datetime.datetime.now(link.monitor.timezone) - datetime.timedelta(hours=period)
timezone.activate(link.monitor.timezone)
rows = TraceHttp.objects.values_list('time', 'elapsed').filter(time__gt=min_time,link_id=link_id,elapsed__gt=0)
array = []
for row in rows:
array.append((row[0].astimezone(link.monitor.timezone),row[1]))
我想避免使用astimezone功能,使Django的爲我做這個,有沒有有時候我缺少有關的激活功能?
編輯
這裏是我的模型,你可以看到顯示被保存在「監控」模式時區:從Django.utils
class Link(models.Model):
...
monitor = models.ForeignKey(Monitor)
...
class Monitor(models.Model):
...
timezone = TimeZoneField(default='Europe/London')
class TraceHttp(models.Model):
link = models.ForeignKey(Link)
time = models.DateTimeField()
elapsed = models.FloatField()
你可以發佈一些代碼來展示now()函數如何與我的代碼一起工作嗎? 我已經設置了USE_TZ = True和TIME_ZONE,請注意link.monitor.timezone存儲在數據庫中,可能是任何時區 –
好了,現在我明白了,你可以把模型中的字段怎麼樣?由於Django默認不存儲時區... – Stortz