如何激活Django的“DATETIME_FORMAT”?

lymnna71  于 2023-06-07  发布在  Go
关注(0)|答案(5)|浏览(260)

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."

更新1DATETIME_FORMAT被破坏(它的值被忽略),尽管有文档。很多年前它是有效的,但从那时起Django的实现就被破坏了。这个特点。Django社区似乎无法决定如何修复它(但同时我认为他们应该从文档中删除DATETIME_FORMAT或添加关于此问题的注解)。

我已经将这些行放入settings.py网站/项目(而不是应用程序)的文件“www.example.com”中,但它似乎没有任何效果(重新启动开发服务器后):
DATETIME_FORMAT = 'Y-m-d H:i:sO'
DATE_FORMAT = 'Y-m-d'
例如,当使用Django管理站点时,会显示“2009年6月29日,下午7:30”。
Django版本是1.0.2 final,Python版本是2.6.2(64位)。操作平台:Windows XP 64 bit.
堆栈溢出问题 * European date input in Django Admin * 似乎是关于完全相反的问题(因此是一个明显的矛盾)。
文件“www.example.com”的完整路径settings.py是“D:\dproj\MSQall\website\GoogleCodeHost\settings.py”。我现在以这种方式启动开发服务器(在Windows命令行窗口中):
cd D:\dproj\MSQall\website\GoogleCodeHost
set DJANGO_SETTINGS_MODULE=GoogleCodeHost.settings
python manage.py runserver 6800
没有区别。此外,这些是从文件“www.example.com”中读取settings.py的:
数据库名称
已安装_应用程序
模板_DIRS
中间件_类
“django-admin.py startproject XYZ”不会创建settings.py包含DATETIME_FORMATDATE_FORMAT的文件“www.example.com”。也许这是有原因的?
序列“d:“,“cd D:\dproj\MSQall\website\GoogleCodeHost”,“python manage.py shell”,“from django.conf import settings”,“settings.DATE_FORMAT”,“settings.DATETIME_FORMAT”输出(如预期):

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

因此,文件“www.example.com”的内容settings.py正在读取,但不会在Django Admin界面中生效。

ejk8hzay

ejk8hzay1#

有:

USE_L10N = False

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

vx6bjr1n

vx6bjr1n2#

正如Ciro Santilli所说,当USE_L10N = True时,本地化格式会覆盖设置中的DATETIME_FORMAT。但是你仍然可以通过创建Django文档中描述的自定义格式文件来覆盖DATETIME_FORMAT和其他日期/时间格式。
详细答案见here
您可以通过创建Django文档中描述的自定义格式文件来覆盖DATE_FORMATDATETIME_FORMATTIME_FORMAT和其他日期/时间格式。
总结如下:
1.在settings.py中设置FORMAT_MODULE_PATH = 'yourproject.formats'
1.创建目录结构yourproject/formats/en(如果使用英语以外的其他语言环境,请将en替换为相应的ISO 639-1语言环境代码),并将__init__.py文件添加到所有目录中,使其成为有效的Python模块
1.将formats.py添加到叶目录,其中包含您要覆盖的格式定义,例如DATE_FORMAT = 'j. F Y' .
实际项目here的示例。

ie3xauqp

ie3xauqp3#

这将解决DATETIME_FORMAT无法解决的特定问题(因为尽管有文档,但在当前的Django实现中它被忽略了),也是脏的,类似于ayaz的答案(不太全局-只会影响管理站点列表视图):
就在排队之后
(date_format,datetime_format,time_format)= get_date_formats()
在文件中(Django通常在Python安装的文件夹Lib/site-packages中)
django/contrib/admin/templatetags/admin_list.py
覆盖datetime_format的值(对于模型中的models.DateTimeField):
datetime_format = 'Y-m-d H:i:sO'
对于仅日期字段:
date_format = 'Y-m-d'
重新启动Web服务器(例如开发服务器)或退出管理界面是必要的更改生效。只需在Web浏览器中进行简单的刷新即可。

zfycwa2u

zfycwa2u4#

这两个设置指令应该在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分支的 Backbone.js 版本的项目中,我通过覆盖django/utils/translation/trans_real.pyget_date_formats()函数中的date_formatdatetime_format值来解决这个问题。这是肮脏的,但我已经使用了一个自定义的Django的各种项目,所以没有看到任何错误的黑客它琐事更多。

mutmk8jj

mutmk8jj5#

根据我对Django 4.2.1的实验,DateTimeField()的DATETIME_FORMAT只在Django模板中工作。此外,DateField()的DATE_FORMAT和TimeField()的TIME_FORMAT在Django模板中工作。* 你可以看到my question解释它。
并且,DateTimeField()DateField()的DATE_INPUT_FORMATS以及DateTimeField()TimeField()的TIME_INPUT_FORMATS在Django Admin中工作。*DATETIME_INPUT_FORMATS不适用于Django项目的任何部分,你可以看到my question解释它。

  • 您需要在settings.py中设置USE_L10N False才能使上述设置生效,因为USE_L10N在它们之前。

相关问题