首页 > 解决方案 > AM PM 在 django html 模板中不起作用

问题描述

Enter a valid date/time.尝试使用 AM 和 PM 时出现错误。没有 AM PM,我不会收到任何错误。我在我的 html 模板中使用 bootstrap datetimepicker。这是我的代码:

来自s.py

class BlogForm(ModelForm):
    class Meta:  
     model = Blog
     fields = ['title','body','published']
     widgets = {
         'title': forms.TextInput(attrs={'class':'form-control','placeholder': 'Title'}),
         'published': forms.DateTimeInput(format=['%Y-%m-%d %I:%M %p']) 
         
      }

#html

 <form method="POST"  enctype="multipart/form-data">
       {{from}}
 </form>

<script>
    $(function () {
      $("#datetimepicker1").datetimepicker({
        format: 'YYYY-MM-DD hh:mm:ss a', 
      });
    });
  </script>

标签: django

解决方案


在您的代码中,您尝试通过设置小部件ie的格式来提供格式DateTimeInput,但问题是这种格式将仅用于输入的初始值,而不用于解析提交的值。相反,您还想将input_formatskwarg 传递给表单字段,即DateTimeField[Django docs]

此外,您的格式似乎缺少您在 javascript 中设置的秒数?在这种情况下,您可能需要添加%S格式字符串:

class BlogForm(ModelForm):
    published = forms.DateTimeField(
        input_formats=['%Y-%m-%d %I:%M:%S %p'],
        widget=forms.DateTimeInput(format='%Y-%m-%d %I:%M:%S %p')
    )
    
    class Meta:
        model = Blog
        fields = ['title','body','published']
        widgets = {
            'title': forms.TextInput(attrs={'class':'form-control','placeholder': 'Title'}),
        }

推荐阅读