gpt4 book ai didi

Django 无法自动保存 DateTimeFields

转载 作者:行者123 更新时间:2023-12-04 20:00:45 25 4
gpt4 key购买 nike

你好,我有一个这样的模型:

from datetime import datetime


class Project(models.Model):
created = models.DateTimeField(editable=False)
updated = models.DateTimeField(editable=False)
product = models.ForeignKey('tool.product')
module = models.ForeignKey('tool.module')
model = models.ForeignKey('tool.model')
zipcode = models.IntegerField(max_length=5)

def save(self, **kwargs):
if not self.id:
self.created = datetime.now()
self.updated = datetime.now()
super(Project, self).save()

def __unicode__(self):
return self.id

但是,当我尝试保存项目时,我得到:

coercing to Unicode: need string or buffer, long found

来自运行服务器:

RuntimeWarning: DateTimeField received a naive datetime (2012-10-31 14:45:36.611622) while time zone support is active.

我不确定这里到底是什么问题,但我假设它与 timezone 妨碍保存 DateTimeField 有关。

如有任何帮助,我们将不胜感激。

最佳答案

首先 DateTimeField 支持这样的自动更新:

created = models.DateTimeField(editable=False, auto_now_add=True) # Only on creation
updated = models.DateTimeField(editable=False, auto_now=True) # On every save

其次,您收到的 RuntimeWarning 意味着您已在您的settings.py 时区感知日期时间对象,例如您将看到以下内容:

USE_TZ = True

当你这样做时,你必须以不同的方式对待日期时间对象,你必须通过明确的 tzinfo 值。

# install the `pytz` module through pip or whatnot
from pytz import timezone
import datetime
from django.utils.timezone import utc

now = datetime.datetime.utcnow().replace(tzinfo=utc)

# To show the time in Greece
athens = timezone('Europe/Athens')
print now.astimezone(athens)

有关详细信息,请参阅 django docspytz docs .

关于 coercing to Unicode: 错误,尝试这样做:

def __unicode__(self):
return unicode(self.id)

关于Django 无法自动保存 DateTimeFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com