Django:模型数据未在本地时区显示

Django:模型数据未在本地时区显示,django,django-templates,utc,pytz,Django,Django Templates,Utc,Pytz,我使用的是Django 1.11和pytz==2018.3 我有一个带有时区字段的聊天模型,它不会在本地时间显示 class Message(models.Model): sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sender') receiver = models.ForeignKey(User, on_delete=models.CASCADE, r

我使用的是Django 1.11和pytz==2018.3

我有一个带有时区字段的聊天模型,它不会在本地时间显示

class Message(models.Model):
    sender    = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sender')        
    receiver  = models.ForeignKey(User, on_delete=models.CASCADE, related_name='receiver')        
    message   = models.CharField(max_length=1200)
    timestamp = models.DateTimeField(auto_now_add=True)
    is_read   = models.BooleanField(default=False)
当我像这样正常打印时,我得到:

<div class="textcontainer lighter">
    {{ message }}
    <span class="time-right">{{ message.timestamp|date:"SHORT_DATETIME_FORMAT" }}</span>
</div>
但是,这是UTC时间(提前6小时。我希望它说的是不同的时间)

我尝试了以下方法:

{{ message.timestamp|localtime }}
但这没什么用

我也尝试过包括这两个:

{% load tz %}
{% get_current_timezone as TIME_ZONE %}
在my settings.py文件中,我有:

USE_L10N = True
USE_TZ = True
想法?
提前谢谢

本地时间在这里是指您在
settings.py
文件中设置的时区中的时间,默认为UTC。类似的内容在
设置.py中定义:

TIME_ZONE = 'America/Chicago'  # or 
TIME_ZONE =  'Asia/Kolkata'
所有在当地时间显示的时间现在只在这个时区内

我相信你正在寻找的是用户机器的时间,而对于这一点,Django中没有内置的东西(据我所知)。您需要编写自己的逻辑来获取用户的时区,可能基于他们的IP地址,或者在客户端用Javascript处理它,从而获取用户机器上的时间。另一个选项是在注册时询问用户的时区,并将其保存在DB中,以便稍后用于时区转换

这里有一个django插件可以帮助你。它基本上使用中间件获取连接用户的IP地址信息,然后将其与用于获取最终用户时区的国家进行映射。

您尝试过这个吗

TIME_ZONE = 'UTC'

这里是本地时间这里是您在settings.py文件中的时区设置中显示的时间,或者默认为UTC。我从您的问题中了解到,您正在查找用户时区中的时间。这看起来非常好,但我无法通过“GEOIP_数据库设置已定义,但文件不存在”错误。我尝试将GEOIP_数据库放在我的settings.py文件和django项目的多个位置,但它似乎从未识别出来。@MicaPearce我自己没有使用过它,但在这里分享,因为它看起来很有希望。您是否可以添加您尝试但不起作用的相关代码?我确信一定有一些小故障。
TIME_ZONE = 'UTC'