Django DatetimeField在更新时更改为不正确的值

时间:2014-12-01 18:48:26

标签: mysql django datetime

我有一个这样的模型:

class Menu(models.Model):    
 version = models.BigIntegerField(blank=False, null=False)
 local = models.ForeignKey(Local, db_column='id_local')
 created = models.DateTimeField(auto_now_add=True, blank=True,db_column='created')
 actived = models.DateTimeField(db_column='actived')
 class Meta:
    managed = False
    db_table = 'menu'

当我创造了一个对象;一切都很简单。但我在更新'actived'时遇到了问题。我使用的代码如下:

menu = Menu.objects.get(version=ver, local=local) 
menu.actived = datetime.now()
menu.save()

有效值是正确的;当我在db( MySql,使用utf-8 charset )或模板中看到它时,值对应。但'menu.created'的值更改为'menu.created - 1 HOUR'的相应值。

我不知道为什么;这就是我修改的所有代码。

2 个答案:

答案 0 :(得分:0)

您可能遇到Timezones.Check this文档

的问题

更好的方法是这样做:

created = models.DateTimeField(default=datetime.datetime.now)

答案 1 :(得分:0)

最后,我得到了解决方案。

首先;谢谢Kevin Christopher Henry。

在我的settings.py中,我更改了这3个设置,一切正常。

# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True

# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = False