如何激活Django的DATETIME_FORMAT?

Pet*_*sen 11 django

应该在哪里放置DATETIME_FORMAT,以便在Django管理站点(Django的自动管理界面)中显示日期时间?

DATETIME_FORMAT的文档,网页 http://docs.djangoproject.com/en/1.0/ref/settings/,说:

"The default formatting to use for datetime fields on
Django admin change-list pages -- and, possibly, by
other parts of the system."
Run Code Online (Sandbox Code Playgroud)

更新1:DATETIME_FORMAT被破坏(忽略它的值),尽管有文档.许多年前它工作,但从那时起,Django的实现已被打破.此功能.似乎Django社区无法决定如何解决它(但与此同时我认为他们应该从文档中删除DATETIME_FORMAT或向其添加关于此问题的注释).

我已将这些行放入网站/项目(而不是应用程序)的"settings.py"文件中,但它似乎没有任何效果(重新启动开发服务器后):

DATETIME_FORMAT ='Ymd H:我:sO'

DATE_FORMAT ='Ymd'

作为示例,使用Django管理站点时显示"2009年6月29日,晚上7:30".

Django版本是1.0.2 final,Python版本是2.6.2(64位).平台:Windows XP 64位.

Stack Overflow问题Django Admin中的欧洲日期输入似乎是完全相反的问题(因此是一个明显的矛盾).

文件"settings.py"的完整路径是"D:\ dproj\MSQall\website\GoogleCodeHost\settings.py".我现在以这种方式启动开发服务器(在Windows命令行窗口中):

cd D:\ dproj\MSQall\website\GoogleCodeHost

设置DJANGO_SETTINGS_MODULE = GoogleCodeHost.settings

python manage.py runserver 6800

没有区别.除了这些是积极从文件"settings.py"读取:

数据库名称

INSTALLED_APPS

TEMPLATE_DIRS

MIDDLEWARE_CLASSES

"django-admin.py startproject XYZ"不会创建包含DATETIME_FORMAT或DATE_FORMAT的文件"settings.py".也许这是有原因的?

序列"d:","cd D:\ dproj\MSQall\website\GoogleCodeHost","python manage.py shell","来自django.conf导入设置","settings.DATE_FORMAT","settings.DATETIME_FORMAT"输出(如预期的那样):

'Y-m-d H:i:sO'
'Y-m-d'
Run Code Online (Sandbox Code Playgroud)

因此正在读取文件"settings.py"的内容,但在Django Admin界面中不生效.

Cir*_*四事件 8

附:

USE_L10N = False
Run Code Online (Sandbox Code Playgroud)

DATE_TIME生效,因为l10n的本地化覆盖DATETIME_FORMATDATE_FORMAT记录在:https://docs.djangoproject.com/en/1.9/ref/settings/#date-format


mrt*_*rts 7

正如 Ciro Santilli 所说,DATETIME_FORMATUSE_L10N = True. 但您仍然可以DATETIME_FORMAT通过创建自定义格式文件来覆盖其他日期/时间格式,如 Django 文档中所述

请参阅此处的详细答案。

您可以通过创建自定义格式文件来DATE_FORMAT覆盖、DATETIME_FORMATTIME_FORMAT其他日期/时间格式,如 Django 文档中所述。USE_L10N = True

总之:

  1. 设置FORMAT_MODULE_PATH = 'yourproject.formats'settings.py
  2. 创建目录结构yourproject/formats/enen如果您使用英语以外的其他区域设置,则替换为相应的 ISO 639-1 区域设置代码)并将__init__.py文件添加到所有目录以使其成为有效的 Python 模块
  3. 添加formats.py到叶目录,其中包含要覆盖的格式定义,例如DATE_FORMAT = 'j. F Y'.

此处来自实际项目的示例。


Pet*_*sen 3

这将解决 DATETIME_FORMAT 无法解决的特定问题(因为尽管有文档,它在当前的 Django 实现中被忽略),也很脏并且类似于 ayaz 的答案(不太全局 - 只会影响管理站点列表视图):

就在该行之后

(日期格式、日期时间格式、时间格式) = get_date_formats()

在文件中(Django 通常位于 Python 安装中的 Lib/site-packages 文件夹中)

django/contrib/admin/templatetags/admin_list.py

覆盖 datetime_format 的值(对于模型中的 models.DateTimeField):

日期时间格式 = 'Ymd H:i:sO'

对于仅日期字段:

日期格式 = '年'

此更改无需重新启动网络服务器(例如开发服务器)或注销管理界面即可生效。只需在网络浏览器中进行简单的刷新即可。