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

问题描述 投票:0回答:3

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

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

我试图让该字段在模板中显示为默认的 Python 日期格式,看起来像“2000-01-01”。 但在 Django 模板中,它显示为“2000 年 1 月 1 日”。

在 Python shell 中,日期显示正确:

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 值。 我该如何实现这个目标?

python django templates model datefield
3个回答
2
投票

我会创建一个模型方法

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
是什么,但它听起来非常 class basey,我不使用它。
我怀疑你可以像这样直接使用模型方法

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

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'calculated_total',)

    def calculated_total(self, obj):
        return obj.get_calculated_total()

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


0
投票

您可以使用类似 {{experience.start_year|日期:'Y'}} 我输入了“Y”,因为我只需要输出年份,如果您需要月份、日期和年份,您可以使用像 {{ 年|日期:'m','d','y'}}


-1
投票

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

示例:

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

Django 日期格式 参考

© www.soinside.com 2019 - 2024. All rights reserved.