Tri*_*daz 27 python django date-formatting
我最近增加了一个新的模式,我的网站,我使用的是admin.py文件来指定正是我希望它会显示在管理网站.它工作得很好,但我无法弄清楚如何让我的一个日期字段包含其显示格式的秒数.我只看到"2011年8月27日,下午12点12分"这样的价值,我想看的是"2011年8月27日,12:12*:37*pm"
小智 29
挖掘我在这里结束,但对我的应用程序采用了不同的方法.
更改django管理员默认格式可以为您想要的每种类型更改django语言环境格式.
将以下内容放在admin.py文件(或settings.py)上以更改django admin的日期时间默认格式.
from django.conf.locale.es import formats as es_formats
es_formats.DATETIME_FORMAT = "d M Y H:i:s"
Run Code Online (Sandbox Code Playgroud)
它将更改该文件上的ModelAdmin日期时间格式(如果在设置中,则更改整个站点).
它不会破坏管理员日期时间过滤器和订单功能,正如@Alan Illing在评论中指出的那样.
希望将来有这个帮助
额外信息:
你可以为django中的每个可用语言环境更改它,这很多.
您可以使用此方法更改以下格式
from django.conf.locale.es import formats as es_formats
es_formats.DATETIME_FORMAT
es_formats.NUMBER_GROUPING
es_formats.DATETIME_INPUT_FORMATS
es_formats.SHORT_DATETIME_FORMAT
es_formats.DATE_FORMAT
es_formats.SHORT_DATE_FORMAT
es_formats.DATE_INPUT_FORMATS
es_formats.THOUSAND_SEPARATOR
es_formats.DECIMAL_SEPARATOR
es_formats.TIME_FORMAT
es_formats.FIRST_DAY_OF_WEEK
es_formats.YEAR_MONTH_FORMAT
es_formats.MONTH_DAY_FORMAT
Run Code Online (Sandbox Code Playgroud)
Gab*_*oss 26
在ModelAdmin中试试这个:
def time_seconds(self, obj):
return obj.timefield.strftime("%d %b %Y %H:%M:%S")
time_seconds.admin_order_field = 'timefield'
time_seconds.short_description = 'Precise Time'
list_display = ('id', 'time_seconds', )
Run Code Online (Sandbox Code Playgroud)
当然,用模型中的相应字段替换"timefield",并在"list_display"中添加任何其他所需字段.
接受的答案是正确的,但是我发现理解它的工作方式/原因有点令人困惑。下面是一个小例子,我希望它能更清楚地说明如何做到这一点。
Django 提供了几种在管理视图中显示“自定义”字段的方法。我更喜欢实现此行为的方法是在类中定义一个自定义字段ModelAdmin
并显示该字段而不是您想要的字段:
from django.contrib import admin
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=50)
birthday = models.DateField()
class PersonAdmin(admin.ModelAdmin):
@admin.display(description='Birthday')
def admin_birthday(self, obj):
return obj.birthday.strftime('%Y-%m-%d')
list_display = ('name', 'admin_birthday')
Run Code Online (Sandbox Code Playgroud)
请注意,我们没有显示模型birthday
中的实际字段Person
,而是将自定义字段 ( admin_birthday
) 定义为 中的方法PersonAdmin
,并通过将其添加到list_display
属性来显示该方法。此外,admin.display()
装饰器还修改 Django 在管理视图中显示此自定义字段的方式。使用这种方法,管理面板将显示“姓名”和“生日”字段,但使用您首选的日期格式。
我更喜欢这种方法的原因是您将Model
字段定义与管理面板中的显示方式分开。您可以在Django 管理文档中阅读有关替代方法的更多信息。
如果你已经尝试了加布里埃尔的答案,但它没有工作,尝试设置USE_L10N = False
的settings.py
,它为我工作。
请注意,如果USE_L10N设置为True,则由区域设置指定的格式具有更高的优先级,并且将被应用
请参阅:https://docs.djangoproject.com/zh-CN/2.0/ref/settings/#std:setting-DATETIME_FORMAT
归档时间: |
|
查看次数: |
20432 次 |
最近记录: |