Django:表单小部件不接受 bootstrapdatetimepicker 提供的日期格式

Django: Form widget not accepting date format provided by bootstrapdatetimepicker

我有以下问题:我有一个 django 表单,它使用 'bootstrapdatetimepicker' 小部件作为日期时间字段。但是,当我尝试 post 表单时,它会抛出 'format is invalid' 错误。

我正在使用本地(荷兰语)时间格式,但我在 forms.py 代码中都包含了这种新格式(见下文)

    class Meta:
    model = Quotation
    fields = [
        'full_name',
        'organisation',
        'address',            
        'date',
        'type',            
        'description',
        'budget',
    ]

    widgets = {'date': DateTimeInput(
        attrs={'id': 'datetimepicker1'},
        format='%d-%m-%Y %H:%M:%S')}

并且在模板中,

    <div class="col-md-12 speaker-form" id="offerte">            
        {% csrf_token %}
        {% crispy form %}
    </div>


<script>

        $(function () {

            $('#datetimepicker1').datetimepicker({
                format:'DD-MM-YYYY HH:mm:ss',
                defaultDate: new Date(),
                icons: {
                    up: "fa fa-chevron-circle-up",
                    down: "fa fa-chevron-circle-down",
                    next: 'fa fa-chevron-circle-right',
                    previous: 'fa fa-chevron-circle-left',                        
                }
            });
        });

    </script>

有谁知道我做错了什么?为什么我在 Python 和 Javascript 代码中的 'format' 覆盖不能正常工作?

JS 库和 DateTimeInputField 似乎已正确配置为允许新的日期时间格式,但模型无法验证新的日期时间格式。因此它不会保存数据。

如果这是正确的,可以修改 settings.py 以允许不同的输入格式。 确保 USE_L10N = False 否则它将覆盖下面列出的自定义格式。

将以下内容添加到 settings.py 的底部:

from django.conf.global_settings import DATETIME_INPUT_FORMATS, DATE_INPUT_FORMATS
DATE_INPUT_FORMATS += ("%d-%m-%Y",)
DATETIME_INPUT_FORMATS += ("%d-%m-%Y %H:%M:%S",)

我遇到了同样的问题,我通过在 ModelForm 中定义字段解决了这个问题:

date = forms.DateTimeField(input_formats=['%d-%m-%Y %H:%M:%S']

class Meta:
    model = Quotation
    fields = [
        'full_name',
        'organisation',
        'address',            
        'date',
        'type',            
        'description',
        'budget',
    ]
    def __init__(self, *args, **kwargs):
        super(YourModelName, self).__init__(*args, **kwargs)
        self.fields['date'].widget.attrs.update({'class': 'form-control', 'id': 'm_datetimepicker_1'})

同时将您的 javascript 格式修改为 'dd-mm-yyyy hh:ii:ss'