【问题标题】:Django update form: does not conform to the required format, "yyyy-MM-dd"Django 更新表单:不符合要求的格式,“yyyy-MM-dd”
【发布时间】:2021-06-04 19:39:38
【问题描述】:

我在后端使用 Django 来保存用户输入的日期。稍后,我想允许用户通过将他们带到新页面来更新该日期输入,向他们显示旧的日期输入,并允许他们更新它。

我在前端使用日期选择器输入字段,以便用户轻松选择日期。

输入我的日期后,我去更新页面更改它,更新页面上的日期选择器输入字段每次都是空的。

在我看到的控制台中

The specified value "Jul. 4, 1776" does not conform to the required format, "yyyy-MM-dd".

我认为问题在于,当我从数据库中检索日期时,它的格式与 forntend 想要的格式不同。日期来自后端,格式为 1776 年 7 月 4 日,前端表单需要它在 1776-07-04。

我想知道如何解决这个问题,让前端和后端都满意,并且用户输入的旧日期显示在更新页面 datepicker 输入字段中

【问题讨论】:

    标签: jquery django date datepicker frontend


    【解决方案1】:

    你可以试试:

    将此添加到您的 settings.py:

    DATE_FORMAT = 'YYYY-MM-DD'
    

    {{my_date|date:'Y-m-d'}}
    

    【讨论】:

    • 当我输入 {{ form.date_field|date:"Y-m-d" }} 时,表单会从前端消失,前端或后端没有任何错误。当我删除日期模板过滤器时,表格又回来了。模板过滤器是否也仅适用于值或日期选择器表单?
    • 尝试使用第一个选项。
    【解决方案2】:

    将其放入 settings.py 似乎可以解决问题

    DATE_FORMAT = 'Y-m-d'
    

    【讨论】:

      【解决方案3】:

      settings.py 中的 DATE_FORMAT 没有为我解决问题

      日期以“yyyy-mm-dd”格式存储在数据库中,为了避免出现此 Javascript 错误消息,我必须在表单定义 format='%Y-%m-%d' 中指定相同的格式。 forms.SelectDateWidget() 工作正常,但我不想使用它。

          class MyForm(forms.ModelForm):
          
              class Meta:
                  model = MyModel
                  fields = ['id', 'title', 'summary_img', 'summary_txt', 'msg_nextdate']
                  widgets = {
                      'summary_txt': forms.Textarea(attrs={'rows':6}),
                      'msg_nextdate': forms.DateInput(attrs={'type': 'date'}, format='%Y-%m-%d'),
                      # 'msg_nextdate': forms.SelectDateWidget()
                      }
      

      如果在 settings.py 中设置了USE_I18N = True,则网络导航器上的日期显示取决于计算机区域设置。

      • mm/dd/yyyy 用于美国/英国格式
      • dd/mm/yyyy 用于 FR/BE 格式

      【讨论】:

        猜你喜欢
        • 2015-08-28
        • 1970-01-01
        • 2021-08-05
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        相关资源
        最近更新 更多