0

我有一个使用 mysql 作为数据库的 django 模型,并且我正在使用时区支持。我的模型中有一个包含日期的字段。

由于 mysql 无法在日期字段中存储时区信息,因此我将时区偏移量存储在另一个字段中。当我查询数据库时,我想使用存储在数据库中的偏移量将所有日期转换为时区感知。

您可以假设我的模型如下所示:

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 自动转换为我的本地时区。

谢谢。

4

1 回答 1

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())

所以你可以用你的 item.pudbate 查询替换 timezone.now

如果时区始终相同,您可以使用第二个参数 (timezone.get_default_timezone) 设置时区,如果时区发生更改,您应该能够将其设置为数据库中的值

于 2014-01-17T16:10:05.683 回答