Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在给定使用_TZ=True的条件下,如何在IST自身的db中显示存储在IST中的DateTimeField?_Python_Django_Timezone - Fatal编程技术网

Python 在给定使用_TZ=True的条件下,如何在IST自身的db中显示存储在IST中的DateTimeField?

Python 在给定使用_TZ=True的条件下,如何在IST自身的db中显示存储在IST中的DateTimeField?,python,django,timezone,Python,Django,Timezone,因此,我是Django的新手,已将我的时区设置为“Asia/Kolkata”,并在设置文件中使用_TZ=True。对于数据库中存储在UTC中的日期时间,显示在我的当前时区中。但是,对于数据库中存储在IST中的日期时间,管理员添加+5:30以显示(即,它假定数据库中的值以UTC为单位) 我想找到一种方法,手动告诉那些使用_TZ=False的模型/管理员 我尝试扩展DateTimeField并重写函数get_internal_type以返回CharField而不是DateTime。它也工作得很好。然

因此,我是Django的新手,已将我的时区设置为“Asia/Kolkata”,并在设置文件中使用_TZ=True。对于数据库中存储在UTC中的日期时间,显示在我的当前时区中。但是,对于数据库中存储在IST中的日期时间,管理员添加+5:30以显示(即,它假定数据库中的值以UTC为单位)

我想找到一种方法,手动告诉那些使用_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)

另外,从长远来看,我对模型级别的更改有点担心,我想知道是否还有其他方法可以解决这个问题。

来自datetime import datetime

当前时间=datetime.now()

已创建\u at=models.datetime字段(默认值为当前\u time.strftime(“%G-%m-%d%H:%m:%S”),空白值为True)

已创建的\u at=models.CharField(默认值为当前\u time.strftime(“%G-%m-%d%H:%m:%S”),blank=True)


如果您不想提供默认时间,那么只需为CharField提供default=''。对于格式化datetime值,我使用了strftime。

from datetime import datetime

当前时间=datetime.now()

已创建\u at=models.datetime字段(默认值为当前\u time.strftime(“%G-%m-%d%H:%m:%S”),空白值为True)

已创建的\u at=models.CharField(默认值为当前\u time.strftime(“%G-%m-%d%H:%m:%S”),blank=True)

如果您不想提供默认时间,那么只需为CharField提供default=''。对于格式化datetime值,我使用了strftime