2009-06-16 7 views
6

Où DATETIME_FORMAT doit-il être placé pour qu'il ait l'effet sur l'affichage de la date et de l'heure dans le site d'administration Django (interface d'administration automatique de Django)?Comment rendre DATETIME_FORMAT de Django actif?

Documentation pour DATETIME_FORMAT, à la page http://docs.djangoproject.com/en/1.0/ref/settings/, dit:

"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 est cassé (la valeur de celui-ci est ignorée ), en dépit de la documentation. Il y a plusieurs années, il a fonctionné, mais depuis lors, les implémentations de Django ont été rompues par rapport à . cette fonctionnalité. Il semble que la communauté Django ne peut pas décider comment le réparer (mais en attendant, je pense que devrait supprimer DATETIME_FORMAT de la documentation ou ajouter une note sur ce problème).

J'ai mis ces lignes dans le fichier « settings.py » du site /projet (non l'application), mais il ne semble pas avoir d'effet (après le redémarrage du serveur de développement):

DATETIME_FORMAT = 'Ymd H: i: sO'

DATE_FORMAT = 'Ymd'

À titre d'exemple 29 "Juin 2009, 19h30" est affiché lorsque en utilisant le site d'administration Django.

La version de Django est 1.0.2 finale et la version de Python est 2.6.2 (64 bits). Plate-forme: Windows XP 64 bits.

Stack Overflow question European date input in Django Admin semble être le problème exact opposé (et donc une contradiction apparente ).

Le chemin d'accès complet au fichier "settings.py" est "D: \ dproj \ MSQall \ website \ GoogleCodeHost \ settings.py". Je maintenant démarrer le serveur de développement de cette façon (dans une fenêtre de ligne de commande Windows ):

cd D: \ dproj \ MSQall \ site \ GoogleCodeHost

set DJANGO_SETTINGS_MODULE = GoogleCodeHost.settings

python manage.py runserver 6800

Il n'y a pas de différence. En outre, ils sont lus positivement à partir du fichier "paramètres.py ":

DATABASE_NAME

INSTALLED_APPS

TEMPLATE_DIRS

MIDDLEWARE_CLASSES

"django-admin.py startproject XYZ" ne crée pas le fichier "settings.py" DATETIME_FORMAT ou DATE_FORMAT Peut-être y a-t-il une raison pour cette?

La séquence "d:", "cd D: \ dproj \ MSQall \ site \ GoogleCodeHost", "shell python manage.py ", "à partir des paramètres d'importation django.conf", "settings.DATE_FORMAT" , sorties « settings.DATETIME_FORMAT » (comme prévu):

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

Ainsi, le contenu du fichier « settings.py » est en cours de lecture, mais ne pas prendre effet dans l'interface Django administration.

+0

Avez-vous le settings.py désigné comme module de paramètres? http://docs.djangoproject.com/fr/dev/topics/settings/#designating-the-settings – jitter

+0

http://stackoverflow.com/questions/7737146/django-template-date-format pourrait être une dupe à ceci, mais la question est moins précise –

Répondre

1

Cela permettra de résoudre le problème particulier qui est impossible avec DATETIME_FORMAT (comme il est ignoré dans les implémentations actuelles Django malgré la documentation), est sale aussi, et est similaire à la réponse de Ayaz (moins mondiale - ne concerneront que la vue liste des sites admin):

Juste après la ligne

(date_format, DATETIME_FORMAT, time_format) = get_date_formats()

dans le fichier (Django est généralement dans le dossier Lib/site-packages en l'installation Python)

django/contrib/admin/templatetags/admin_list.py

remplacer la valeur de DATETIME_FORMAT (pour un models.DateTimeField dans le modèle):

DATETIME_FORMAT = 'Ymd H: i: sO'

Et pour Date- seuls les champs:

date_format = 'Ymd'

Redémarrage du serveur Web (par ex. serveur de développement) ou se déconnecter de l'interface d'administration est pas nécessaire pour cette modification pour prendre effet. Une simple actualisation dans le navigateur Web est tout ce qui est nécessaire.

1

Les deux directives de définition doivent être définies dans settings.py. Pourriez-vous vous assurer que le même settings.py que vous éditez est en cours de lecture lorsque vous démarrez le serveur de développement?

Vous pouvez toujours tomber à l'shell interactif Python en exécutant python manage.py shell et exécuter ces commandes pour assurer que les valeurs de format date/heure deviennent par l'amende:

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

Ok, j'ai oublié de regarder vers le haut , mais ticket #2203 traite de cela. Malheureusement, le ticket reste dans l'état en attente.

Je me souviens que, pour un projet qui a utilisé une certaine révision du tronc de la branche 0.97 de Django, je CONTOURNÉS que par les valeurs date_format écrasant et datetime_format dans la fonction get_date_formats() à l'intérieur django/utils/translation/trans_real.py. C'était sale, mais j'avais déjà utilisé un Django personnalisé pour ce projet, donc je n'ai rien vu de mal à le pirater un peu plus.

Questions connexes