指定模型中django DateField的显示,而不是表单/输入/设置



我有一个带有DateField的Django模型,如下所示:

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

我正在尝试将该字段显示为模板中的默认Python日期格式,看起来像";2000-01-01";。但在Django模板中,它显示为";2000年1月1日;

在Python外壳中,日期显示正确:

In [4]: resource.production_date                                                              
Out[4]: datetime.date(2014, 4, 20)
In [5]: str(resource.production_date)                                                         
Out[5]: '2014-04-20'

但在模板中,当我调用production_date时,我得到了另一种格式。

我有很多使用这个值的模板,以及将数据添加到数据库的多种方式。所以我不想转到每个模板并更改显示。我不想更改输入表单,因为这不是添加数据的唯一方式。我不想更改我的网站设置。我只想让字段显示默认的Python值。我该如何做到这一点?

我会制作一个模型方法get_production_date。。所以我没有做大量的模板标签,也不是它们的粉丝。。然后CTRL+Shift+F(仅HTML文件(找到production_date并将其更改为get_production_date

型号.py

class MyModel(models.Model):
production_date = models.DateField('Creation Time')
# ..other fields
def get_production_date(self)
from datetime import datetime # idk if this is required, I assume so?
return self.production_date.strftime("%Y-%m-%d")

模板使用情况

{{ MyModelObj.get_production_date }}

编辑

我不是100%了解accessor是什么,但它听起来非常类基础y,我不使用它
我怀疑你是否可以像那样直接使用模型方法

但是对于我的管理员,我在管理表中使用自定义列,如:

class MyModelAdmin(admin.ModelAdmin):
list_display = ('name', 'calculated_total',)
def calculated_total(self, obj):
return obj.get_calculated_total()

所以,在基于类的视图中一定有类似的东西,对吧
我一直在谷歌上搜索,但找不到正确的单词来描述它。

您可以在模板中应用日期过滤器

示例:

{{ birthday|date:"m, d, Y" }}

Django日期格式参考