【问题标题】:Django - change default presentation format of model date fieldDjango - 更改模型日期字段的默认呈现格式
【发布时间】:2014-10-01 23:32:13
【问题描述】:

我有一个带有 DateField 的模型,设置如下:

date = models.DateField(blank=False, default=datetime.now)

每次我将该字段数据放入模板 ({{obj.date}}) 时,它都会以这种格式显示:

July 24, 2014

我想将其永久更改为这种格式:

24.7.2014

我还有一个搜索页面,可以通过日期字段搜索数据 - 我也希望能够以这种格式搜索。 我该怎么做?

编辑:我认为这与LANGUAGE_CODE = 'en-us' 设置有关。当我改变它时,它也会改变日期的格式。怎么覆盖?

【问题讨论】:

    标签: python django date-formatting datefield


    【解决方案1】:

    如果您关心的是日期的显示方式(输出格式);您可以使用date 过滤器,如here 所述:

    {{ obj.date|date:"d.m.Y"}} 
    

    这里是Django docs

    【讨论】:

      【解决方案2】:

      Django 使用 l10n 将数字、日期等格式化为本地值。更改您的 LANGUAGE_CODE 是一个好点,它允许 Django 加载正确的环境。

      除此之外还需要通过USE_L10N=True来配置l10n的使用 见:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-USE_L10N

      要使表单域能够本地化输入和输出数据,只需使用它的 localize 参数:

      class CashRegisterForm(forms.Form):
         product = forms.CharField()
         revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)
      

      这也适用于日期。

      (来自:https://docs.djangoproject.com/en/dev/topics/i18n/formatting/#locale-aware-input-in-forms

      编辑:对于模板中的使用,您可以通过以下方式简单地格式化日期:

      {% load l10n %}
      
      {{ value|localize }}
      

      {{ your_date|date:"SHORT_DATE_FORMAT" }}
      

      第二个是在 settings.py 中使用 SHORT_DATE_FORMAT

      干杯,马克

      【讨论】:

      • 它仍然不是我正在寻找的解决方案 - 我想要做的是覆盖用于所有内容的格式。我希望能够以这种格式搜索数据库,并以相同的格式显示数据。表格与问题无关。谢谢!
      • 更改语言代码是可能的,但我们国家的语言代码不是我要找的。​​span>
      • 说真的,将数据放入代码的方式是通过表单。您确定使用了正确的格式并且其中没有恶意软件代码。应该是这样:[Browser/UserInput] -> [Form] -> [View] -> [Model]
      【解决方案3】:

      使用 python 日期时间:

      from datetime import datetime
      
      date = models.DateField(blank=False, default=datetime.now().strftime("%d.%m.%Y"))
      

      【讨论】:

      • 我不知道它实际上是如何保存在数据库中的,但是当我用数据库浏览器查看数据库时,日期字段数据以这种格式显示:2014-07-17,所以我认为它有与保存格式无关,而与数据的呈现方式有关。
      • 这就是为什么我正在寻找一种解决方案来改变 django 默认显示此类数据的方式
      猜你喜欢
      • 2019-05-29
      • 2011-12-05
      • 2016-01-25
      • 2020-07-16
      • 1970-01-01
      • 2013-12-12
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多