【问题标题】:Django 3 template date tag return nothingDjango 3 模板日期标签不返回任何内容
【发布时间】:2023-03-14 07:14:01
【问题描述】:

我正在尝试使用日期模板标签来格式化数据库中的日期时间

2020-10-23 08:59:44.792274

在 Django 模板上

{{ item.payment_received_time }} # return 2020-10-23 08:59:44.792274
{{ item.payment_received_time|date:"D d M Y" }} # return nothing

但是什么都没有返回,我错过了什么? 谢谢

【问题讨论】:

  • 这可能是因为payment_received_time 是一个字符串,而不是datetime。您是否在数据库中使用了DateTimeField
  • 谢谢,我使用的是 SerializerMethodField(),因为在数据库中它保存为 json,但现在我将字符串解析为 datetime 对象并可以正常工作,谢谢

标签: python django django-templates


【解决方案1】:

(...) 但没有返回任何内容。

|date template filter [Django-doc] 仅适用于 datedatetime 对象。它不能处理字符串,从那时起结构就“丢失”了。

例如:

>>> Template('{{ foo|date:"D d M Y" }}').render(Context({'foo': datetime.now().date()}))
'Sun 25 Oct 2020'
>>> Template('{{ foo|date:"D d M Y" }}').render(Context({'foo': '2020-10-25'}))

因此,在您的模型中,您将payment_received_time 存储为DateTimeField [Django-doc]DateField [Django-doc]

class Payment(models.Model):
    payment_received_time = models.DateTimeField()

【讨论】:

  • 谢谢,它有效,所以,因为我使用的是 SerializerMethodField,所以我使用 dateutil 中的解析器将该字符串转换为日期对象
猜你喜欢
  • 2014-10-17
  • 2019-05-01
  • 2022-11-15
  • 2016-07-28
  • 2021-07-26
  • 2013-07-11
  • 2013-11-28
  • 1970-01-01
  • 2021-10-08
相关资源
最近更新 更多