【问题标题】:Django date filter not working in templateDjango 日期过滤器在模板中不起作用
【发布时间】:2014-09-28 07:02:31
【问题描述】:

我在 django 模板中格式化日期对象时遇到问题。在 models.py 中,对象如下所示:

release_date = models.DateField(blank=True,null=True)

在数据库中是这样的:

[release_date] date,

模板中不起作用的调用是这样的:

<td>{{ row.release_date|date:"Y-m-d" }}</td>

如果我删除 |date:"Y-m-d",输出如下所示:

08/04/2014

使用 |date:"Y-m-d" 根本没有日期,但网站的其余部分看起来很好,并且控制台中也没有错误消息。

我已经尝试将views.py 中的日期时间对象转换为字符串,但不知何故,该对象仍以日期时间对象的形式出现在模板中。这是我在views.py中所做的:

data=Release.objects.all().order_by('-release_date')
#convert dates to format YYYY-MM-DD since conversion does not work in the template
for data_item in data:
    if data_item.orig_plan_date is not None:
        data_item.orig_plan_date = data_item.orig_plan_date.strftime('%Y-%m-%d')

有人知道我该如何解决这个问题吗?

【问题讨论】:

标签: django date django-templates


【解决方案1】:

根据this 帖子,您似乎可以更改日期保存到数据库中的格式,这样您就不必指定它们的显示方式。

在您的情况下,我假设如果您编辑 settings.py 以包含:

DATE_INPUT_FORMATS = ('%Y-%m-%d')

并将其连接到用于将日期保存到数据库的表单/模型表单。可能是这样的:

class YourDateModelformName(ModelForm): yourDateField = DateField(input_formats=settings.DATE_INPUT_FORMATS) class Meta: model = YourDateModel

【讨论】:

  • 我没有这个日期对象的单独表格。我使用管理界面输入数据。有趣的是,日期显示为 2014-08-06。
  • 我终于让它工作了。我设置了 USE_L10N = False,它在 True 之前,并在 settings.py 中添加了 SHORT_DATE_FORMAT = 'Y-m-d'。现在我完全不用在模板中使用日期过滤器了。
猜你喜欢
  • 2015-06-18
  • 2020-03-07
  • 2018-05-04
  • 2023-03-16
  • 2016-05-20
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多