Как сделать DjETo DATEETIME_FORMAT активным? - PullRequest
9 голосов
/ 17 июня 2009

Где нужно разместить 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 были сломанный эта особенность. Похоже, сообщество Джанго не могу решить, как это исправить (но в то же время я думаю, что они следует удалить DATETIME_FORMAT из документации или добавить примечание об этой проблеме к нему).

Я поместил эти строки в файл "settings.py" сайт / проект (не приложение), но, похоже, нет любой эффект (после перезапуска сервера разработки):

DATETIME_FORMAT = 'Г-м-д Ч: i: sO'

DATE_FORMAT = 'Y-m-d'

В качестве примера "29 июня 2009 г., 7:30 вечера". отображается, когда используя сайт администратора Django.

Версия Django - финальная версия 1.0.2, а версия Python - 2.6.2. (64 бит). Платформа: Windows XP 64 бит.

Вопрос переполнения стека Ввод европейской даты в Django Admin , кажется, о совершенно противоположной проблеме (и, следовательно, очевидной противоречие).

Полный путь к файлу "settings.py" "D: \ dproj \ MSQall \ сайт \ GoogleCodeHost \ settings.py". я сейчас запустить сервер разработки таким образом (в команде Windows строка окна):

cd D: \ dproj \ MSQall \ website \ GoogleCodeHost

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

Ответы [ 4 ]

6 голосов

С:

USE_L10N = False

DATE_TIME вступает в силу, так как локализация l10n переопределяет DATETIME_FORMAT и DATE_FORMAT, как описано в: https://docs.djangoproject.com/en/1.9/ref/settings/#date-format

2 голосов
/ 13 сентября 2016

Как сказал Чиро Сантилли, формат локализации переопределяет DATETIME_FORMAT в настройках, когда USE_L10N = True. Но вы все равно можете переопределить DATETIME_FORMAT и другие форматы даты / времени, создав файлы нестандартного формата, как описано в документации Django .

Смотрите подробный ответ здесь .

1 голос
/ 18 июня 2009

Это решит конкретную проблему, которая невозможна с DATETIME_FORMAT (как это игнорируется в текущем Django реализации вопреки документации), тоже грязно и похож на ответ аяза (менее глобальный - повлияет только просмотр списка сайтов администратора):

Сразу после строки

(date_format, datetime_format, time_format) = get_date_formats ()

в файле (Django обычно находится в папке Lib / site-packages в установка Python)

Джанго / вно / администратор / templatetags / admin_list.py

перезаписать значение datetime_format (для models.DateTimeField в модели):

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

И для полей только для даты:

date_format = 'Y-m-d'

Перезапуск веб-сервера (например, сервера разработки) или Выход из интерфейса администратора НЕ необходим для это изменение вступит в силу. Простое обновление в веб-браузере это все, что требуется.

1 голос
/ 17 июня 2009

Две директивы настройки должны быть определены в settings.py. Не могли бы вы убедиться, что то же самое settings.py, которое вы редактируете, читается при запуске сервера разработки?

Вы всегда можете перейти в интерактивную оболочку Python, запустив python manage.py shell, и запустить эти команды, чтобы убедиться, что значения формата даты / времени проходят нормально:

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

Хорошо, я забыл посмотреть, но тикет # 2203 имеет дело с этим. К сожалению, билет остается в состоянии ожидания.

Я помню, что для проекта, в котором использовалась определенная версия ствола ветки Django 0.97, я обошел эту проблему, переписав значения date_format и datetime_format в функции get_date_formats() внутри django/utils/translation/trans_real.py. Это было грязно, но я уже использовал своего рода Django для этого проекта, поэтому я не видел, что что-то пошло не так, взломав его немного больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...