【问题标题】:ValidationError at [u'Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format.']ValidationError at [u'以 YYYY-MM-DD HH:MM[:ss[.uuuuuu]] 格式输入有效日期/时间。']
【发布时间】:2013-06-18 04:35:51
【问题描述】:

forms.py

class SearchFilterForm(Form):
    fromdate = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'dd/mm/yy','class':'datefield','readonly':'readonly'}))
todate = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'dd/mm/yy','class':'datefield','readonly':'readonly'}))

models.py

class Report(models.Model):
    user = models.ForeignKey(User, null=False)
    created_date_time = models.DateTimeField('Created')
    sent_date_time = models.DateTimeField('Sent')

在数据库中,日期对象以这种格式保存YYYY-MM-DD HH:MM,我在 forms.py 中使用格式为dd/mm/yyyy。如果我在 form.Since 中使用 yyyy-mm-dd 格式,我不会收到任何错误我在表单中使用了 dd/mm/yyyy 格式,但出现此验证错误。我想知道如何处理。

【问题讨论】:

  • 我希望希望数据根本不会以文本形式存储在数据库中。您应该尽可能避免字符串转换 - 如果可能的话,从数据库中获取数据 as 日期/时间类型。我不太了解 Django,无法提供帮助,但这应该是您的目标。
  • @JonSkeet 幸运的是,Django 确实使用日期字段将日期存储在数据库中 - 但我假设 Monk 碰巧使用的任何工具都以这种文本格式输出日期:)
  • @ThomasOrozco:这也是我的期望。我认为了解数据的固有性质与其在某些工具或其他工具中的文本表示之间的区别非常重要。
  • @JonSkeet 我完全同意!

标签: django django-models django-forms django-templates django-views


【解决方案1】:

您应该在表单中使用DateField 并配置input_formats 以支持您想要使用的格式:

ACCEPTABLE_FORMATS = ['%d-%m-%Y',       # '25-10-2006'
                      '%d/%m/%Y',       # '25/10/2006'
                      '%d/%m/%y']       # '25/10/06'
                      # Add your own at will, but be mindful of collisions.


class SearchFilterForm(Form):    
    fromdate = forms.DateField(input_formats=ACCEPTABLE_FORMATS)
    todate = forms.DateField(input_formats=ACCEPTABLE_FORMATS)

See the docs 了解更多!


更好的是,you can enable localization in your Django app,让 django 自动为您使用正确的格式!

# settings.py
USE_L10N = True

# forms.py
class SearchFilterForm(Form):    
    fromdate = forms.DateField(localize=True)
    todate = forms.DateField(localize=True)

【讨论】:

  • ,我用同样的方法尝试了我的代码,我得到了同样的错误。这是我在搜索场景中使用的,所以在给出从和到日期并点击搜索按钮后回复这个。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-11-18
相关资源
最近更新 更多