【问题标题】:Django save string to date fieldDjango将字符串保存到日期字段
【发布时间】:2011-12-19 10:26:21
【问题描述】:

在我的 Django 应用程序中,我有一个 DateField(格式为 'YYYY-MM-DD')。当我尝试保存字符串 '2011-11-01' 时,我没有收到任何错误,但我的字段获得了 NULL 值。

我尝试使用 datetime 和 time 库中的 strptime 函数来做到这一点,但遇到了同样的问题。基本上这一切都以一种形式发生

我有

如果 form.valid(): form.cleaned_data['date'] = 年 + '-' + 月 + '-' 日 form.save()

【问题讨论】:

  • 请展示一些真实的代码。表格中有哪些字段?年月日从何而来?

标签: django datefield


【解决方案1】:

表单验证的一部分包括清理数据。 cleaned_data dict 包含 python 对象,而不是(字符串)发布数据。

所以form.cleaned_data['data']需要是datetime对象(或者你需要在清理之前编辑表单或发布数据)

【讨论】:

    【解决方案2】:

    我认为您应该检查接受日期对象的模型对象并确认您没有将其设置为始终为空...实际上我认为用词不当,不是在视图或保存方法中,而是在模型中应该采用日期对象的对象。也许您应该考虑在此处发布您的模型代码,以便我们查看。

    【讨论】:

    • 问题是我在form.cleaned_data中写入数据,似乎不正确。正确的方法是让 f = form.save(commit=False) 然后 f.date = datetime(year,month,day) 然后 f.save() form.save_m2m()...谢谢大家和希望这对你也有帮助。
    • 我会做一些研究,看看为什么我的做法不正确
    猜你喜欢
    • 2021-06-25
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    • 2014-05-20
    • 1970-01-01
    相关资源
    最近更新 更多