我正在处理表单并有一个日期字段。 我想保存日期字段的不同日期格式,而不是使用django。 我正在" 01-jan-2016"日期,并希望保存在我的数据库中。当我试图保存相同的格式是引发错误
[u"'07-Dec-2016' value has an invalid date format. It must be in YYYY-MM-DD format."].
我知道这类问题已经提出,但它们无法解决我的问题。
views.py
post_date = request.POST['date']
lead_obj = CustomerLeads.objects.create(posting_date = post_date)
my models.py
class Leads(models.Model):
customer_name = models.CharField(max_length=50,null=True, blank=True)
title = models.CharField(max_length=100, null=True, blank=True)
posting_date = models.DateField()
答案 0 :(得分:1)
在你的views.py中试试这个:
from dateutil import parser
d = parser.parse("07-December-2016")
print d
d = d.strftime("%d-%b-%Y")
print d
输出:
2016-12-07 00:00:00
07-Dec-2016
它将处理各种格式。
答案 1 :(得分:1)
DATE类型用于具有日期部分但没有时间部分的值。 MySQL在' YYYY-MM-DD'中检索并显示DATE值。格式。该 支持的范围是' 1000-01-01'到' 9999-12-31'。
几乎任何合理的格式都接受日期和时间输入, 包括ISO 8601,SQL兼容,传统POSTGRES等。 对于某些格式,日期输入中的日,月和年的排序是 含糊不清,并且支持指定预期的排序 这些领域。将DateStyle参数设置为MDY以进行选择 月 - 日 - 年解释,DMY选择日 - 月 - 年 解释,或YMD选择年 - 月 - 日解释。
链接表显示postgresql接受您要查找的格式。但它是如何存储的?让我们尝试插入
INSERT INTO stackoverflow_heatwatchlist(next_date_from, next_date_to)
VALUES('1999 Jan 05','2001 Jun 06');
当你选择时,你得到的是' 2001-06-06'和' 1999-01-05'
在这里,您可以以任何您想要的格式插入,它将完全按照您输入的方式保存,因为sqlite不会强制执行任何严格的类型检查。 sqlite中的类型纯粹是装饰性的。但是django对此事有不同的看法,不会让你偏离标准格式。
在插入数据的方式方面具有很大的灵活性。请参阅链接表。但它是如何存储的? ' 1999年1月5日'
如何将日期存储在表格中是完全无关紧要的,重要的是接受输入的格式以及它的显示方式。这就是django和蟒蛇的优秀日期和时间格式发挥作用的地方。
如果您对他们不满意,您有两种选择。第一种是将日期和时间存储为unix时间戳,并自己完成所有格式化,所有你需要的只是一点数学 - 这是一种相当普遍的做法。
第二种是使用CharField来存储你的数据,但这不是很有用。您不仅需要自己进行所有格式化和输入验证,任何计算都需要进行大量的字符串处理和转换。
答案 2 :(得分:0)
尝试在项目设置中将'%d-%b-%Y'
添加到DATE_INPUT_FORMATS。