【问题标题】:Does Django 1.7 has a automatic way to convert datetime fields from manual HTML form to model?Django 1.7 是否具有将日期时间字段从手动 HTML 表单转换为模型的自动方法?
【发布时间】:2025-12-06 18:20:12
【问题描述】:

我正在编写一个简单的应用程序,该应用程序有一个表单,该表单以“d/m/Y”格式保存出生日期。由于我们在巴西使用的日期格式,我必须使用以下代码转换日期以匹配格式“Y-m-d”:

arr_date = request.POST['birth_date'].split('/')
author.birth_date = datetime.date(int(arr_date[2]), int(arr_date[1]), int(arr_date[0]))

表单的字段是:

<input type="date" name="birth_date" value="{{ author.birth_date|date:'d/m/Y' }}"/>

有没有一种“更好”的方式来进行这种转换?

【问题讨论】:

  • 如果你使用的是Django表单,当你调用is_valid()时它会自动转换。
  • 谢谢丹尼尔,但我正在手动执行此操作以了解基础工作的工作原理

标签: python django date datetime format


【解决方案1】:

您可以使用标准 python 库中的datetime.strptime()

from datetime import datetime
dt = datetime.strptime(str_date, '%d/%m/%Y')

【讨论】:

  • 感谢@catavaran 它成功了。为了使这更加自动化,我在 views.py 文件 (from django.conf import settings) 中导入了我的 settings.py 文件,并将 settings.DATE_FORMAT[0] 作为第二个参数传递给函数。
【解决方案2】:

catavaran 答案有效,但您也可以使用 DJANGO_INPUT_FORMATS 设置 https://docs.djangoproject.com/en/1.7/ref/settings/#date-input-formats ,如果您想接受多种日期格式或在您的应用程序中使用多种表单,它将使您受益。

如果您想显示可以从https://docs.djangoproject.com/en/1.7/ref/settings/#date-format 受益的日期

【讨论】:

  • 实际上在我的settings.py中我有以下元组: DATETIME_INPUT_FORMATS = ( '%Y/%m/%d', ) DATE_FORMAT = ( '%d/%m/%Y', )并且 USE_L10N 属性设置为 False,但似乎即使这样它也被忽略了。
最近更新 更多