0

html にフォームが表示されます。日時ピッカーから日付を選択しないと、フォームは正常に送信されます。

しかし、日付を選択すると、送信できませんでした。したがって、日付と時刻の形式に問題がある可能性があります。

日時ピッカーは HTML で動作し、ドロップダウン リストが表示され、それを選択することもできます。日付を選択すると、フォームを送信できませんでした。

日時ピッカーのフォーム HTML スニペット

$(function() {
     $('.date-picker').datepicker(
                    {
                        dateFormat: "yymm",
                        changeMonth: true,
                        changeYear: true,
                        showButtonPanel: true,
                        onClose: function(dateText, inst) {

                            function isDonePressed(){
                                return ($('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1);
                            }
                            if (isDonePressed()){
                                var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
                                var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
                                $(this).datepicker('setDate', new Date(year, month, 1)).trigger('change');

                                 $('.date-picker').focusout()//Added to remove focus from datepicker input box on selecting date
                            }
                        },
                        beforeShow : function(input, inst) {
                            inst.dpDiv.addClass('month_year_datepicker')

                            if ((datestr = $(this).val()).length > 0) {
                                year = datestr.substring(datestr.length-4, datestr.length);
                                month = datestr.substring(0, 2);
                                $(this).datepicker('option', 'defaultDate', new Date(year, month-1, 1));
                                $(this).datepicker('setDate', new Date(year, month-1, 1));
                                $(".ui-datepicker-calendar").hide();
                            }
                        }
                    })
        });

models.py

start_date=models.DateField(auto_now=False, auto_now_add=False)
end_date=models.DateField(auto_now=False, auto_now_add=False)

フォーム.py

widgets = {
        'start_date': forms.DateInput(attrs={'class':'datepicker'}),
        'end_date': forms.DateInput(attrs={'class':'datepicker'}),
    }

html では、日付の形式は 201010 (YYYYMM) のようになります。

html の日付形式がモデルと同じではないためではないかと思っていたので、提出できませんでした。

このような状況の場合、モデルやフォームを修正するにはどうすればよいか教えてください。日付形式は、html (YYYYMM) 201003 などのようにする必要があります。

4

1 に答える 1

1

選択した日付形式を受け入れるように、フォーム クラスのフォーム フィールドを構成する必要があります。

start_date = forms.DateField(widget=DateInput(format='%Y%m'), input_formats=['%Y%m']) 
end_date = forms.DateField(widget=DateInput(format='%Y%m'), input_formats=['%Y%m'])

(これは通常Formとの両方で機能するはずModelFormです)。

于 2015-10-28T04:24:19.513 に答える