DateTimeField 未显示在模板中 - django

DateTimeField not shown in a template - django

我在模型中有两个日期时间字段:

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 --:--, -- 表示未显示数据库中的值,而所有其他字段都可以毫无问题地呈现。 另一方面,我可以毫无问题地执行表单并且更新成功。

模板:

<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>

更新

添加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'}) 

对于日期时间选择器,您可以使用类似这样的东西

    <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/