Django - 更改模型日期字段的默认表示格式

时间:2014-08-08 13:09:08

标签: python django date-formatting datefield

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

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

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

July 24, 2014

我希望将其永久更改为以下格式:

24.7.2014

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

编辑:我认为它与LANGUAGE_CODE = 'en-us'设置有关。当我改变它时,它也改变了日期的格式。怎么可能被淹没?

3 个答案:

答案 0 :(得分: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 欢呼,马克

答案 1 :(得分:1)

使用python datetime:

from datetime import datetime

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

答案 2 :(得分:1)

如果您关注的是日期的显示方式(输出格式);您可以使用 private void DrawingForm_FormClosing(object sender, FormClosingEventArgs e) { this.axAcroPDF.Dispose(); Application.DoEvents(); CoFreeUnusedLibraries(); } [System.Runtime.InteropServices.DllImport("ole32.dll")] static extern void CoFreeUnusedLibraries(); 过滤器,如here所述:

date

这里是Django docs