应该在哪里放置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界面中不生效.
附:
USE_L10N = False
Run Code Online (Sandbox Code Playgroud)
DATE_TIME生效,因为l10n的本地化覆盖DATETIME_FORMAT并DATE_FORMAT记录在:https://docs.djangoproject.com/en/1.9/ref/settings/#date-format
正如 Ciro Santilli 所说,DATETIME_FORMAT当USE_L10N = True. 但您仍然可以DATETIME_FORMAT通过创建自定义格式文件来覆盖其他日期/时间格式,如 Django 文档中所述。
请参阅此处的详细答案。
您可以通过创建自定义格式文件来
DATE_FORMAT覆盖、DATETIME_FORMAT和TIME_FORMAT其他日期/时间格式,如 Django 文档中所述。USE_L10N = True总之:
- 设置
FORMAT_MODULE_PATH = 'yourproject.formats'于settings.py- 创建目录结构
yourproject/formats/en(en如果您使用英语以外的其他区域设置,则替换为相应的 ISO 639-1 区域设置代码)并将__init__.py文件添加到所有目录以使其成为有效的 Python 模块- 添加
formats.py到叶目录,其中包含要覆盖的格式定义,例如DATE_FORMAT = 'j. F Y'.此处来自实际项目的示例。
这将解决 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'
对于仅日期字段:
日期格式 = '年'
此更改无需重新启动网络服务器(例如开发服务器)或注销管理界面即可生效。只需在网络浏览器中进行简单的刷新即可。
| 归档时间: |
|
| 查看次数: |
9757 次 |
| 最近记录: |