【问题标题】:django's DateField model field and acceptable valuesdjango 的 DateField 模型字段和可接受的值
【发布时间】:2011-09-24 01:44:02
【问题描述】:

我在使用 django 的 DateField 模型字段时遇到了一些问题。它不应该能够接受fiveDaysLater 作为有效的日期对象吗?当我尝试将 FiveDaysLater 添加到数据库中时,我收到一条错误消息 cannot add null value to date。但是,第二次我将date 字段更改为常规CharField,fiveDaysLater 值将毫无问题地添加到数据库中。仅供参考,如果我打印五天后,我会得到2011-09-28

我的看法:

def myView():
    now = datetime.date.today()
    fiveDaysLater = now + datetime.timedelta(days=5)
    newDate = Speech(date = fiveDaysLater)
    newDate.save()

我的模型

class Speech(models.Model):
    date = models.DateField()

【问题讨论】:

  • 您的代码对我来说很好,除非视图定义中的错字(缺少括号)。什么数据库和django版本?也许您在简化要共享的代码时遗漏了一些重要的东西?
  • 您的错误是来自fiveDaysLater = now + datetime.timedelta(days=5) 还是来自save()
  • 我正在使用带有 django 版本 1.3 的 sqlite。错误来自 newDate.save() 因为 fiveDaysLater = now + datetime.timedelta(days=5) 打印 2011-09-28。

标签: python django django-models django-views


【解决方案1】:

“但是,第二次我将日期字段更改为常规 CharField...”只是一个怀疑,但是如果您在代码中进行了此更改,请确保使用 syncdb 删除并重新创建语音表,否则,sqlite 将不知道这种变化。 (或者您可以使用 sqlite exporer for firefox 或类似的东西更改数据类型...)

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 2018-12-20
    • 1970-01-01
    • 2012-06-13
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2020-07-07
    相关资源
    最近更新 更多