如何激活Django的DATETIME_FORMAT?

时间:2009-06-16 21:43:35

标签: 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."

更新1 :DATETIME_FORMAT已损坏(其值为 尽管有文档,但我忽略了)。很多年前它 工作,但从那时起Django实现了 破碎了。此功能。这似乎是Django社区 无法决定如何解决它(但与此同时我认为他们 应从文档中删除DATETIME_FORMAT或添加 关于这个问题的说明)。

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

  

DATETIME_FORMAT ='Y-m-d H:i:sO'

     

DATE_FORMAT ='Y-m-d'

作为一个例子“2009年6月29日,下午7:30”显示时 使用Django管理站点。

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

Stack Overflow问题 European date input in Django Admin 似乎是完全相反的问题(因此很明显 矛盾)。

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

  

cd D:\ dproj \ MSQall \ website \ GoogleCodeHost

     

设置DJANGO_SETTINGS_MODULE = GoogleCodeHost.settings

     

python manage.py runserver 6800

没有区别。除了这些都是积极阅读 来自“settings.py”文件:

  

DATABASE_NAME

     

INSTALLED_APPS

     

TEMPLATE_DIRS

     

MIDDLEWARE_CLASSES

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

序列“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'

因此正在读取文件“settings.py”的内容,但确实如此 不在Django Admin界面中生效。

4 个答案:

答案 0 :(得分:6)

使用:

USE_L10N = False

DATE_TIME生效,因为l10n的本地化会覆盖DATETIME_FORMATDATE_FORMAT,如下所示:https://docs.djangoproject.com/en/1.9/ref/settings/#date-format

答案 1 :(得分:2)

正如Ciro Santilli所说,DATETIME_FORMAT时,本地化格式会在设置中覆盖USE_L10N = True。但您仍可以creating custom format files as described in Django documentation覆盖DATETIME_FORMAT和其他日期/时间格式。

详见答案here

答案 2 :(得分:1)

应在settings.py中定义两个设置指令。您是否可以确保在启动开发服务器时正在读取正在编辑的settings.py

您可以通过运行python manage.py shell来放弃Python交互式shell,并运行这些命令以确保日期/时间格式值是否正常:

from django.conf import settings
settings.DATE_FORMAT
settings.DATETIME_FORMAT

好的,我忘了查一下,但是ticket #2203处理了这个问题。不幸的是,机票仍处于待定状态。

我记得对于使用Django的0.97分支的某个主干修订的项目,我通过覆盖date_format函数中的datetime_formatget_date_formats()值来解决这个问题。 django/utils/translation/trans_real.py。它很脏,但我已经在为该项目使用了各种自定义的Django,所以没有看到任何错误的黑客攻击它更多。

答案 3 :(得分:1)

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

在行

之后
  

(date_format,datetime_format,time_format)= get_date_formats()

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

  

的django /了contrib /管理/ templatetags / admin_list.py

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

  

datetime_format ='Y-m-d H:i:sO'

仅适用于日期字段:

  

date_format ='Y-m-d'

重新启动网络服务器(例如开发服务器)或 退出管理界面需要 此更改生效。在Web浏览器中进行简单刷新 就是所需要的一切。