【问题标题】:Why Django DateField doesn't accept empty values?为什么 Django DateField 不接受空值?
【发布时间】:2018-12-20 19:35:09
【问题描述】:

我有一个带有空白 = True 和 null = True 的 DateField 字段的模型。 似乎不可能为 Datefield 保存一个空值的对象。

class ProjectTask(models.Model):
    actual_start_date = models.DateField(blank=True, null=True)

然后尝试使用 Python 控制台:

p = ProjectTask.objects.all().last()
p.actual_start_date = ""
p.save()

结果是:

venv/lib/python3.4/site-packages/django/db/models/fields/__init__.py", line 1273, in to_python
    params={'value': value},
django.core.exceptions.ValidationError: ["'' value has an invalid date format. It must be in YYYY-MM-DD format."]

我正在使用 Python 3.4、Django 1.9 和 PostgreSQL。

有什么建议吗?

【问题讨论】:

  • @WillemVanOnsem 会出现,但blank 表示ModelForm 中不需要该字段。空值确实是None

标签: django python-3.x django-models


【解决方案1】:

日期不是字符串。如果要传递字符串,则需要将其转换为日期。通常,您的表单会验证您是否有一个有效的日期,但是您通过直接在模型上设置一个空字符串来绕过它。

如果您根本不想设置值,则传递 None。

【讨论】:

  • 意思是把p.actual_start_date = ""改成p.actual_start_date = None
猜你喜欢
  • 2013-01-22
  • 1970-01-01
  • 2019-10-07
  • 2011-01-30
  • 2013-01-19
  • 1970-01-01
  • 2022-08-17
  • 2020-07-21
  • 2020-05-13
相关资源
最近更新 更多