Django - 更改模型日期字段的默认展示格式
我有一个模型里面有一个日期字段,设置成这样:
date = models.DateField(blank=False, default=datetime.now)
每次我在模板里使用这个字段的数据({{obj.date}}
)时,它显示的格式是:
July 24, 2014
我想把这个格式永久改成这样:
24.7.2014
另外,我还有一个搜索页面,可以通过日期字段来搜索数据——我也想能用这个格式来搜索。该怎么做呢?
编辑:我觉得这可能和 LANGUAGE_CODE = 'en-us'
的设置有关。当我改变这个设置时,日期的格式也会跟着变。那我该怎么覆盖这个设置呢?
3 个回答
1
使用Python的日期时间模块:
from datetime import datetime
date = models.DateField(blank=False, default=datetime.now().strftime("%d.%m.%Y"))
2
Django使用本地化(l10n)来把数字、日期等格式化成当地的样式。改变你的语言代码(LANGUAGE_CODE)是一个不错的开始,这样Django就能加载正确的环境。
除此之外,你还需要通过设置USE_L10N=True来配置本地化的使用。具体可以参考这个链接: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。
祝好,Marc