在 Django 管理站点中,如何更改时间字段的显示格式?
我最近向我的网站添加了一个新模型,并且我使用 admin.py 文件来准确指定我希望它在管理网站中的显示方式。它工作得很好,但我不知道如何让我的日期字段之一在其显示格式中包含秒。我只看到像“Aug. 27, 2011, 12:12 pm”这样的值,而我想看到的是“Aug. 27, 2011, 12:12*:37* pm”
I recently added a new model to my site, and I'm using an admin.py file to specify exactly how I want it to appear in the admin site. It works great, but I can't figure out how to get one of my date fields to include seconds in it's display format. I'm only seeing values like "Aug. 27, 2011, 12:12 p.m." when what I want to be seeing is "Aug. 27, 2011, 12:12*:37* p.m."
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
四处挖掘我就结束了,但对我的应用程序应用了不同的方法。
更改 django admin 默认格式可以通过更改您想要的每种类型的 django 区域设置格式来完成。
将以下内容放在您的 admin.py 文件(或 settings.py)中,以更改 django 管理员的日期时间默认格式。
它将更改该文件(或整个站点,如果在设置中)上的 ModelAdmin 日期时间格式。
正如 @Alan Illing 在评论中指出的那样,它不会破坏管理日期时间过滤器和订单功能。
希望这对将来有所帮助
额外信息:
您可以为 django 中的每个可用语言环境更改它,这些语言环境有很多。
您可以使用此方法更改以下格式
digging around I ended here but applied a different approach to my app.
Changing django admin default formats could be done changing the django locale formats for every type you want.
Put the following on your admin.py file (or settings.py) to change datetime default format at your django admin.
It will change the ModelAdmin's datetime formats on that file (or whole site if in settings).
It does not breaks admin datetime filters and order features as @Alan Illing has point out in comments .
hope this help in future
Extra info:
You can change it for every available locale in django, which are a lot.
You can change the following formats using this approach
在 ModelAdmin 中尝试一下:
当然,将“timefield”替换为模型中的适当字段,并在“list_display”中添加任何其他所需的字段。
Try this in the ModelAdmin:
Replacing "timefield" with the appropriate field in your model, of course, and adding any other needed fields in "list_display".
如果您尝试过加布里埃尔的答案但不起作用,请尝试在
settings.py
中设置USE_L10N = False
,它对我有用。参见:https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT
If you've tried gabriel's answer but it did not work, try to set
USE_L10N = False
insettings.py
, it works for me.See: https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT
接受的答案是正确的,但是我发现理解它的工作方式/原因有点令人困惑。下面是一个小例子,我希望它能更清楚地说明如何做到这一点。
Django 提供了几种在管理视图中显示“自定义”字段的方法。我更喜欢实现此行为的方法是在
ModelAdmin
类中定义一个自定义字段并显示该字段,而不是您想要的字段:请注意,而不是显示实际的
birthday
字段在Person
模型中,我们将自定义字段 (admin_birthday
) 定义为PersonAdmin
中的方法,并通过将其添加到PersonAdmin
中来显示该字段代码>list_display 属性。此外,admin.display()
装饰器修改 Django 在管理视图中显示此自定义字段的方式。使用这种方法,管理面板将显示姓名和生日字段,但使用您首选的日期格式。我更喜欢这种方法的原因是您将模型字段定义与管理面板中的显示方式分开。您可以在 Django 管理文档。
The accepted answer is correct, however I found it a bit confusing to understand how/why it works. Below is a small example that I hope illustrates how to do this more clearly.
Django provides a few ways to display "custom" fields in your admin view. The way I prefer to achieve this behavior is to define a custom field in the
ModelAdmin
class and display that instead of your intended field:Notice that instead of displaying the actual
birthday
field from thePerson
model, we define a custom field (admin_birthday
) as a method in thePersonAdmin
and display that instead by adding it to thelist_display
attribute. Furthermore, theadmin.display()
decorator modifies how Django will display this custom field in the admin view. Using this approach, the admin panel will show the NAME and BIRTHDAY fields but using your preferred date formatting for the date.The reason I prefer this approach is you keep the
Model
field definitions separate from how you display them in the admin panel. You can read more about alternative approaches in the Django admin documentation.这对我有用:
在 models.py 中:
在 admin.py 中
This works for me:
In models.py:
In admin.py