默认情况下在django模型

时间:2016-12-16 19:18:08

标签: python django datetime django-models pytz

我在Django中创建了一个模型,我想在本地时间默认输入创建时间。我在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中默认输入日期时间吗?提前致谢

4 个答案:

答案 0 :(得分:1)

你需要改变。

USE_TZ = False

通过这样做,您将停止使用UTC 并且TIME_ZONE = 'Asia/Kolkata'将生效。

答案 1 :(得分:0)

Django docs中所述,auto_now_add填充了默认时区。如上所述here,这是根据TIME_ZONE设置填充的。

因此 - 我认为你的问题的答案是:

TIME_ZONE=Asia/Kolkota

creation_date = models.DateTimeField(auto_add_now=True)

答案 2 :(得分:0)

它的一个常见模式如下:

created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True)

答案 3 :(得分:0)

最简单的方法是

在“设置/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)