我有一个这样的模型:
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'的相应值。
我不知道为什么;这就是我修改的所有代码。
答案 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