【问题标题】:How to change Django datetime field format in datepicker?如何更改日期选择器中的 Django 日期时间字段格式?
【发布时间】:2018-07-15 19:13:59
【问题描述】:

我有一个名为 close_date 的模型字段

models.py

class Project(models.Model):
    close_date = models.DateTimeField(blank=True, null=True)

在我的表单中,我没有添加任何类来显示它,因为我将在我的模板中使用 django-widget-tweaks 来完成它。但是,我的表单如下所示:

forms.py

class NewProjectForm (ModelForm):
    class Meta:
        model = Project
        fields = ['close_date', ...]

模板

{% load widget_tweaks %}
    <div class="form-group" id="close_date">
        <label>{{project_form.close_date.label}}</label>
        <div class="input-group date">
            <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
            {% render_field project_form.close_date class="form-control" type="text" %}
        </div>
    </div>

<script>
        $('#close_date .input-group.date').datepicker({
            todayBtn: "linked",
            keyboardNavigation: false,
            forceParse: false,
            calendarWeeks: true,
            autoclose: true
        });
</script>

这一切都很好,我可以显示表单,将其保存到数据库,甚至向用户显示数据,但是当我想编辑这个对象并从我的视图中填充表单时,我在日期选择器输入字段:

2018-02-28 00:00:00

如何将那里显示的内容从 2018-02-28 00:00:00 更改为 02/28/2018

这是在 django 方面还是 JS 方面?

【问题讨论】:

    标签: javascript jquery python django datepicker


    【解决方案1】:

    您是否尝试过像这样在表单中指定输入格式?

    close_date = DateField(input_formats=['%m/%d/%Y'], label=_('Installation Date'),widget=DateInput())
    

    【讨论】:

    • 这行得通!做的正是我想做的!谢谢!
    • 很高兴我能帮上忙 :)
    【解决方案2】:

    您应该在模型中使用 DateField(doc link) 而不是 DateTimeField :)

    【讨论】:

      【解决方案3】:

      我可以为您提供部分解决方案,因为现在是凌晨 3 点(抱歉)。使用DateField 而不是DateTimeField,这样00:00:00 部分就不再存在了。

      接下来,您需要将日期从2018-02-28 重新格式化为02/28/2018。而已。据我了解,任何一种输入都适用于表单,但在编辑过程中,Django 首选带有- 的输入,所以这就是它向您显示的内容。

      如果这让您感到困扰,那么要么使用 JS 库来放置日历,以便用户使用日历来输入/更改数据,而不是手动输入,或者使用自定义 javascript 代码在整个页面之后更改输入加载。

      【讨论】:

      • 感谢您在深夜回答我的问题,但是,我的模板中已经有一个日历小部件,当他们单击 close_date 输入框时,日期选择器小部件将弹出并让他们选择日期。我想知道它当前显示的格式是否可以更改
      • 嗯,我给你的解决方案是hacky解决这个问题的方式。创建一个 JS 脚本,该脚本将在每次更改时应用于日期字段。然后只需以您喜欢的格式重新调整文本。请谷歌一下如何编写代码。如果您对代码有具体问题,我可以为您提供帮助。如果您尝试自己编写代码,您将学到更多!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      相关资源
      最近更新 更多