【问题标题】:Django DatetimeField change on update with incorrect valueDjango DatetimeField 在更新时更改为不正确的值
【发布时间】:2014-12-01 18:48:26
【问题描述】:

我有一个这样的模型:

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, with utf-8 charset) 或模板中看到它时,值对应。但是“menu.created”的值更改为“menu.created - 1 HOUR”的对应值。

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

【问题讨论】:

  • 并不总是同一时间-1。每次我尝试更新活动时间;创建的日期时间发生了变化(数据库值减一,并用新值保存)
  • 好的,我想我明白你在说什么了。听起来数据库格式和 Python 格式之间的转换存在一些问题,因此时间一直在偏移。可能是数据库或适配器的配置问题。听起来你有USE_TZ=False?使用有意识的日期时间可能会解决这个问题。

标签: mysql django datetime


【解决方案1】:

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

首先;感谢凯文克里斯托弗亨利。

在我的 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

【讨论】:

    【解决方案2】:

    您的 Timezones 可能有问题。请检查 this 文档

    更好的方法是这样做:

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

    【讨论】:

    • 为什么这样更好? documentation 明确推荐auto_nowauto_now_add
    • 我试过了: created = models.DateTimeField(auto_now=True, blank=True, db_column='created') / created = models.DateTimeField( db_column='created') / created = models.DateTimeField (默认=datetime.datetime.now,空白=True,db_column='created')。结果相同;但我认为我解释自己是错误的。每次使用该函数都会在数据库中减去一个小时
    猜你喜欢
    • 2021-07-06
    • 2013-10-02
    • 2015-01-11
    • 2014-07-16
    • 2015-05-18
    • 1970-01-01
    • 2016-02-07
    • 2021-10-21
    • 1970-01-01
    相关资源
    最近更新 更多