在django模型中默认以本地时间输入当前日期时间

mwyxok5s  于 2023-05-08  发布在  Go
关注(0)|答案(5)|浏览(220)

我在Django中创建了一个模型,我想在默认情况下输入本地时间的创建时间。我在www.example.com中设置了以下内容settings.py:

TIME_ZONE = 'Asia/Kolkata'
USE_TZ = True

我尝试了以下方法:

import pytz

status_timezone = pytz.timezone('Etc/UTC')

class Status(models.Model):
    status = models.IntegerField(default=0, blank=True)
    active = models.IntegerField(default=1, blank=True)
    creation_date = models.DateTimeField(default=status_timezone.localize(datetime.now()))

这总是为所有条目提供相同的日期时间(模型初始化的时间

class Status(models.Model):
    status = models.IntegerField(default=0, blank=True)
    active = models.IntegerField(default=1, blank=True)
    creation_date = models.DateTimeField(default=datetime.now)

这将以UTC表示日期时间
有人能告诉如何在IST中默认输入日期时间吗?先谢谢你了

k10s72fa

k10s72fa1#

你需要改变。

USE_TZ = False

这样做您将停止使用UTCTIME_ZONE = 'Asia/Kolkata'将生效。

xwbd5t1u

xwbd5t1u2#

正如Django文档中所解释的,auto_now_add是用默认时区填充的。如此处所述,这是根据TIME_ZONE设置填充的。
因此,我认为你的问题的答案是:
TIME_ZONE=Asia/Kolkota
creation_date = models.DateTimeField(auto_add_now=True)

deikduxw

deikduxw3#

其常见模式如下:
created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)

guicsvcw

guicsvcw4#

最简单的方法就是
在“settings/py”中:

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Kolkata' #'UTC' 

USE_I18N = True

USE_L10N = True

USE_TZ = True

在'models.py'中:

from django.utils import timezone
creation_date = models.DateTimeField(default = timezone.now, blank=False)
disho6za

disho6za5#

已解决:
在models.py
从django.utils导入时区
models.DateTimeField(默认值= timezone.now)
在settings.py
TIME_ZONE = 'Europe/罗马' #意大利
USE_TZ =假

相关问题