【问题标题】:Django DateField cannot be NoneDjango DateField 不能为 None
【发布时间】:2020-03-26 21:20:28
【问题描述】:

我真的很苦恼 DateTime 不能是 Django (3.0.4) 的 None 问题。

我知道这是 Stackoverflow 上的一个已知问题,但我无法解决。

我确实有这个领域:

begin_holidays = models.DateField(null=True, blank=True)

现在如果提交未设置 request.POST['begin_holidays'] 的表单,我会收到错误消息:

„“ is invalid date format. It has to be YYYY-MM-DD

有人有想法吗?

【问题讨论】:

  • 你能具体说明你使用的ModelForm吗?
  • 我没有使用 ModelFom 我从 request.POST 获取数据
  • 那么它不起作用是完全有道理的,因为空字符串确实无法分配给DateField,您应该将其传递给None。但这正是为什么你最好使用ModelForm
  • 我得到了你的 Poit 但即使我将字段设置为 None 我也会得到错误。

标签: python sql django


【解决方案1】:

如果你把它留空,它将提交空字符串,因此这将不起作用。

您可以尝试分配这个:

myobject.begin_holidays = request.POST['begin_holidays'] <b>or None</b>

但我强烈建议改用modelforms [Django-doc]。因为这会自动进行清理、验证和删除大量样板代码。

【讨论】:

  • 但是和 request.POST.get('begin_holidays',None) 不一样吗?
  • @phwebn:不,因为request.POST,根据您的输入包含一个值:空字符串。 or 评估左操作数的真实性,如果为假(例如空字符串),则采用右操作数。
猜你喜欢
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 2017-01-20
  • 2021-08-16
  • 2018-09-01
  • 1970-01-01
相关资源
最近更新 更多