Django DateTimeField可选时间部分

4

我有一个字段,它表示事件的开始时间,我正在使用Django中的DateTimeField。

这个字段是必填项,但有时用户只知道开始日期而不知道时间。

有没有办法使时间部分可选,同时保持日期部分必填?


1
您可以将时间文本字段默认设置为_00:00_。 - Rohan
你考虑过使用SplitDateTimeWidget吗?https://docs.djangoproject.com/en/dev/ref/forms/widgets/#splitdatetimewidget - karthikr
日期是通过默认的管理界面输入的,看起来它已经使用了一个SplitDateTimeWidget - 问题是它坚持要有一个时间。我认为答案是像Rohan建议的那样设置一个午夜默认值。如果Rohan把他的评论变成答案,我会接受它。 - SteveC
2个回答

2
也许你应该尝试将日期和时间分开。有DateField和TimeField可以实现这一点。

这个方法可以实现,但我希望不必创建任何新字段,因为数据库中已经有数据了。 - SteveC

0

在视图或模型中使用的示例:

您可以使用函数strptime来显示日期时间字段的任何格式。

from datetime import datetime
datetime.now().strftime('%Y-%m-%d')
# print string '2013-06-25'

在模板中使用的示例:

您可以使用模板标记date

{{ datetime_field|date:"Y-m-d" }}


问题在于如何存储数据,而不是如何显示数据。 - SteveC
好的,这是同样的决定。日期保存为整个日期,如果用户只想看到日期,您可以像上面写的那样显示给他。如果我还有不理解的地方,您能展示一下模型、表单和视图吗? - Abbasov Alexander
使用的唯一表单和视图是Django默认的管理界面。客户想要在我的模型中的DateTimeField中输入日期但不包括时间,但这会导致验证错误,因为时间是必需的。我正在寻找模型代码,以查看是否可以使时间非强制性。看起来这是不可能的。 - SteveC
你可以尝试执行以下步骤。首先,在表单的类中为日期时间字段分配forms.DateField。其次,在保存表单时,您可以从form.cleaned_data['name_your_datefield']form必须是您的类表单的实例)获取并更改值。 - Abbasov Alexander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接