我有一个使用mysql作为db的django模型,我正在使用时区支持。我的模型中有一个有日期的字段。
由于mysql无法在datefield中存储时区信息,因此我将时区偏移存储在另一个字段中。当我查询数据库时,我想使用存储在数据库中的偏移量将所有日期转换为时区感知。
您可以假设我的模型如下所示:
class Item(models.Model):
pubDate = models.DateTimeField(verbose_name="publish date")
pubDate_tz = models.IntegerField()
我的查询目前是:
items = Item.objects.all().filter(channel__category = category, pubDate__range=[today_date, tomorrow_date]).order_by('-pubDate')
但在我的模板中,我希望使用item.pubDate自动转换为我的本地时区。
感谢。
答案 0 :(得分:0)
尝试在查询中使用timezone.make_aware吗?
这里的文档中的信息 https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.make_aware https://docs.djangoproject.com/en/dev/topics/i18n/timezones/
timezone_aware转换的基本示例:
today = timezone.now()
today_aware = timezone.make_aware(time_ago, timezone.get_default_timezone())
所以你将timezone.now替换为item.pudbate查询
如果时区始终相同,您可以使用第二个参数(timezone.get_default_timezone)设置时区,如果时区更改,您应该能够将其设置为数据库中的值