Поле DateTimeField не отображается в шаблоне - django
У меня есть два поля DateTime в модели:
models.py
start_appointment = models.DateTimeField(default=timezone.now, blank=True)
end_appointment = models.DateTimeField(default=timezone.now, blank=True)
У меня также есть форма, где я устанавливаю виджеты для вышеуказанных полей:
'start_appointment': forms.DateTimeInput(attrs={'class': 'form-control', 'type': "datetime-local"}),
'end_appointment': forms.DateTimeInput(attrs={'class': 'form-control', 'type': "datetime-local"}),
У меня есть представление обновления, где я хочу обновить поля назначений, например, start_appointment. Однако при отображении формы в шаблоне эти два поля отображаются как dd/mm/yyyy --:--, --
, то есть значения из базы данных не отображаются, а все остальные отображаются без проблем.
С другой стороны, я могу выполнить форму без проблем, и обновление происходит успешно.
template:
<div class="form-group row">
<label class="col-form-label col-3 text-lg-right text-left">{% trans 'Start Appointment' %}</label>
<div class="col-9">
{{ form.start_appointment }}
</div>
</div>
Update
Добавление файла forms.py
class AddAppointmentForm(forms.ModelForm):
class Meta:
model = Appointment
fields = ['user', 'name', 'appointment_notes', 'seat', 'start_appointment', 'end_appointment']
widgets = {
'user': forms.Select(attrs={'class': 'form-control'}),
'name': forms.TextInput(attrs={'class': 'form-control'}),
'appointment_notes': forms.Textarea(attrs={'maxlength': '900', 'class': 'form-control' }),
'seat': forms.Select(attrs={'class': 'form-control'}),
'start_appointment': forms.DateTimeInput(attrs={'class': 'form-control', 'type': "datetime-local"}),
'end_appointment': forms.DateTimeInput(attrs={'class': 'form-control', 'type': "datetime-local"}),
}
В чем может быть проблема?
проблема может заключаться в следующем 'type': "datetime-local"
попробуйте это
попробуйте изменить ваше время даты на что-то вроде этого
'start_appointment': forms.DateTimeInput(format='%Y-%m-%d %H:%M:%S', attrs={'class':'datetimefield'})
а для datetimepicker вы можете использовать что-то вроде этого
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
<script>
window.addEventListener("DOMContentLoaded", function () {
flatpickr(".datetimefield", {
enableTime: true,
enableSeconds: true,
dateFormat: "Y-m-d H:i:S",
});
});
</script>
Вы можете узнать больше на Flatpickr здесь https://flatpickr.js.org/