Django DatePicker в ModelForm показывает неверную дату с экземпляром - PullRequest
0 голосов
/ 19 июня 2019

У меня есть ModelForm в forms.py в виде -

class MyForm(forms.ModelForm):
from_date = forms.DateField(input_formats=['%d-%m-%Y'],
                           label='From Date',
                           widget=forms.TextInput(
                                   attrs={'placeholder': 'Select a date', 'class': 'datepicker'})
                           )
to_date = forms.DateField(input_formats=['%d-%m-%Y'],
                           label='To Date',
                           widget=forms.TextInput(
                                   attrs={'placeholder': 'Select a date', 'class': 'datepicker'})
                           )

class Meta:
    model = MyModel
    fields = ['from_date', 'to_date', 'reason']

и связанных js -

<script src="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/4.5.2/flatpickr.min.js"></script>
$('.datepicker').flatpickr({
    dateFormat: "d-m-Y",
    allowInput:true,
});

С формой создания все работает нормально, и объект создается успешно.Однако при редактировании объекта начальная дата, указанная в форме, неверна (вероятно,% Y-% m-% d анализируется как% d-% m-% Y).Как правильно указать дату в форме обновления?Я попытался установить начальное значение в __init__, но оно не сработало.

1 Ответ

1 голос
/ 19 июня 2019

Вы должны использовать DateInput, а не TextInput вместе с атрибутом format.

from_date = forms.DateField(input_formats=['%d-%m-%Y'],
                           label='From Date',
                           widget=forms.DateInput(
                                   format='%d-%m-%Y',
                                   attrs={'placeholder': 'Select a date', 'class': 'datepicker'})
                           )

(Помните, поле отвечает за проверку ввода, виджет отвечает за отображение.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...