【问题标题】:DateTimeField not shown in a template - djangoDateTimeField 未显示在模板中 - django
【发布时间】:2022-01-03 17:34:33
【问题描述】:

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

模板:

<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'}) `
  • 是的,这似乎是问题所在。使用格式我可以看到日期和时间,但我现在缺少 datetimepicker。

标签: django forms datetime format


【解决方案1】:

问题可能是这个'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>

你可以在这里https://flatpickr.js.org/了解更多关于 Flatpickr 的信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 2015-11-09
    • 2013-06-23
    • 2013-08-17
    • 2012-05-24
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多