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界面中生效。
答案 0 :(得分:6)
使用:
USE_L10N = False
DATE_TIME
生效,因为l10n的本地化会覆盖DATETIME_FORMAT
和DATE_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_format
和get_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浏览器中进行简单刷新 就是所需要的一切。