给定USE_TZ = True的条件,如何在IST本身的db中显示IST中存储在IST中的DateTimeField?

时间:2019-04-04 06:15:15

标签: python django timezone

因此,我是Django的新手,并且在设置文件中将我的时区设置为“亚洲/加尔各答”,并且将USE_TZ = True设置为True。对于存储在数据库中UTC中的日期时间,显示在我当前的时区中。但是,对于存储在数据库中IST中的日期时间,管理员为显示添加了+5:30(即,假定db中的值以UTC为单位)

我想找到一种方法手动告诉那些模型/管理员USE_TZ = False。

我尝试扩展DateTimeField并重写get_internal_type函数以返回CharField而不是DateTime。它也工作正常。但是,我不知道它在后台实际上是如何工作的。

class MyDateTimeField(DateTimeField):
    def get_internal_type(self):
        return "CharField"

class FileUpload(models.Model):
    ....
    ....
    created_at = models.MyDateTimeField(auto_now_add=True)
    updated_at = models.MyDateTimeField(auto_now=True)

从长远来看,我对模型级别的更改还是有些警惕,想知道是否还有其他方法可以解决此问题。

1 个答案:

答案 0 :(得分:0)

从日期时间导入日期时间

current_time = datetime.now()

created_at = models.DateTimeField(default = current_time.strftime(“%G-%m-%d%H:%M:%S”),空白= True)

created_at = models.CharField(默认= current_time.strftime(“%G-%m-%d%H:%M:%S”),空白= True)

如果您不想提供默认时间,只需为CharField设置default =''。为格式化日期时间值,我使用了strftime。