Проблема с датой Django в CRUD-приложении

#python-3.x #django #django-models #django-forms #flatpickr

#python-3.x #django #django-модели #django-формы #flatpickr

Вопрос:

Я использую flatpickr информацию о дате в своем приложении Django. Проблема в том, что когда я хочу обновить worker информацию, на edit.html странице значение по умолчанию birth_date отображается некорректно. Например, я создал работника Xen , родившегося в 01-05-1997, и щелкнул, чтобы обновить его имя, при birth_date вводе он отображает сегодняшнюю дату. Вот мои коды:

forms.py

 class WorkerForm(ModelForm):  
    class Meta:  
        model = Worker  
        fields = "__all__"  
        widgets = {
            'birth_date': DateTimeInput(format='%Y-%m-%d %H:%M:%S', attrs={'class':'datetimefield'})
        }   
  

models.py :

 class Worker(models.Model):
    ...
    birth_date = models.DateTimeField(blank=True, null=True)
  

edit.html :

 ...
<div class="form-group row">
  <label class="col-sm-2 col-form-label">İşçinin doğum tarixi</label>
  <div class="col-sm-4">
    <input class="datetimefield" type="date" name="birth_date" id="birth_date" value="{{ worker.birth_date }}" />
  </div>
</div>
...
    <script>
        window.addEventListener("DOMContentLoaded", function () {
            flatpickr(".datetimefield", {
                enableTime: true,
                enableSeconds: true,
                dateFormat: "Y-m-d H:i:S",
                time_24hr: true,
                locale: "az",
            });
        });
    </script>
  

Комментарии:

1. Ваш DateFormat имеет синтаксис «php date», но flatpickr использует свою собственную строку формата , свободно основанную на strftime() without the % . Поскольку и Python, и flatpickr поддерживают строки даты ISO, я настоятельно рекомендую пойти простым путем.

Ответ №1:

Я изменил последнюю строку скрипта в соответствии с ответом @Melvyn:

defaultDate: `worker.birth_date.strftime()`