在Djang数据库中以一种格式保存日期

2024-06-16 10:29:15 发布

您现在位置:Python中文网/ 问答频道 /正文

在表单.py在

INPUT_FORMAT = (
('%d/%m/%Y','%m/%d/%Y')
)
class ReportDatetimeForm(forms.ModelForm):
date = forms.DateField(input_formats = INPUT_FORMAT,
widget=forms.DateInput()

class Meta:
model = Report
fields = ['date']

这是我的表单,以两个不同的日期作为输入格式。While以这种格式给出输入日期%m/%d/%Y'保存时日期和月份可以交换数据库。那个影响我的申请。所以我想将这两种输入格式保存为一种格式,即yyyy-mm-dd,那么用户输入什么格式的输入格式,给定格式应以上述格式保存。在

我想知道如何在表单.py以单一格式将日期保存在数据库中。在

谢谢


Tags: py数据库format表单inputdate格式forms
1条回答
网友
1楼 · 发布于 2024-06-16 10:29:15

存储在数据库中的实际日期与进入字段的输入文本无关。日期存储为日期对象,而不是任意字符串。在

您所面临的问题是,列出为有效的两种格式有时会为同一输入生成不同的日期对象。它们是模棱两可的。在

如果用户在表单字段中输入字符串“01/02/1990”,实际日期是多少?是1990年2月1日,还是1990年1月2日?在您的特定实现中,选择的日期将是第一种格式:2月1日。它将按顺序检查每个日期格式,并尝试解析日期。如果成功,则创建日期并保存。如果不成功,它将尝试每个连续的格式。在

要么选择一种格式,要么选择一种永远不含糊的多种格式。javascript日历选择器的使用非常有用,甚至可以为日期的各个部分单独输入文本。在

您应该做的是在django表单中只允许ISO8601日期格式“YYYY-MM-DD”。在UI中,只要在发送到服务器之前将日期(使用javascript)转换为“YYYY-MM-DD”格式,就可以允许用户以他们喜欢的任何格式输入日期。但是你应该做的是有3个单独的文本输入-一个是日,月,年。在

相关问题 更多 >