Where should DATETIME_FORMAT be placed for it to have effect on the display of date-time in the Django admin site (Django’s automatic admin interface)?
Documentation for DATETIME_FORMAT, on page http://docs.djangoproject.com/en/1.0/ref/settings/, says:
"The default formatting to use for datetime fields on
Django admin change-list pages -- and, possibly, by
other parts of the system."
Update 1: DATETIME_FORMAT is broken (the value of it is ignored), despite the documentation. Many years ago it worked, but since then the Django implementations have been broken wrt. this feature. It seems the Django community can't decide how to fix it (but in the meantime I think they should remove DATETIME_FORMAT from the documentation or add a note about this problem to it).
I have put these lines into file "settings.py" of the website/project (not the app), but it does not seem to have any effect (after restarting the development server):
DATETIME_FORMAT = 'Y-m-d H:i:sO'
DATE_FORMAT = 'Y-m-d'
As an example "June 29, 2009, 7:30 p.m." is displayed when using Django admin site.
Django version is 1.0.2 final and Python version is 2.6.2 (64 bit). Platform: Windows XP 64 bit.
Stack Overflow question European date input in Django Admin seems to be about the exact opposite problem (and thus an apparent contradiction).
The full path to file "settings.py" is "D:\dproj\MSQall\website\GoogleCodeHost\settings.py". I now start the development server this way (in a Windows command line window):
cd D:\dproj\MSQall\website\GoogleCodeHost
set DJANGO_SETTINGS_MODULE=GoogleCodeHost.settings
python manage.py runserver 6800
There is no difference. Besides these are positively read from file "settings.py":
DATABASE_NAME
INSTALLED_APPS
TEMPLATE_DIRS
MIDDLEWARE_CLASSES
"django-admin.py startproject XYZ" does not create file "settings.py" containing DATETIME_FORMAT or DATE_FORMAT. Perhaps there is a reason for that?
The sequence "d:", "cd D:\dproj\MSQall\website\GoogleCodeHost", "python manage.py shell", "from django.conf import settings", "settings.DATE_FORMAT", "settings.DATETIME_FORMAT" outputs (as expected):
'Y-m-d H:i:sO'
'Y-m-d'
So the content of file "settings.py" is being read, but does not take effect in the Django Admin interface.
With:
USE_L10N = False
DATE_TIME
takes effect, since the localization of l10n overrides DATETIME_FORMAT
and DATE_FORMAT
as documented at: https://docs.djangoproject.com/en/1.9/ref/settings/#date-format
As Ciro Santilli told, localization format overrides DATETIME_FORMAT
in settings when USE_L10N = True
. But you can still override DATETIME_FORMAT
and other date/time formats by creating custom format files as described in Django documentation.
See detailed answer here.
You can override
DATE_FORMAT
,DATETIME_FORMAT
,TIME_FORMAT
and other date/time formats whenUSE_L10N = True
by creating custom format files as described in Django documentation.In summary:
- Set
FORMAT_MODULE_PATH = 'yourproject.formats'
insettings.py
- Create directory structure
yourproject/formats/en
(replacingen
with the corresponding ISO 639-1 locale code if you are using other locale than English) and add__init__.py
files to all directories to make it a valid Python module- Add
formats.py
to the leaf directory, containing the format definitions you want to override, e.g.DATE_FORMAT = 'j. F Y'
.Example from an actual project here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With