2010-05-28 7 views
2

J'ai une application dans Django 1.2. La langue est sélectionnable (I18N et Locale = True)Django 1.2: Les dates dans les formulaires d'administration ne fonctionnent pas avec les Locales (I10N = True)

Lorsque je sélectionne la langue anglaise. Dans le site, l'administrateur fonctionne bien. Mais quand je change dans n'importe quelle autre langue c'est ce qui arrive avec les entrées de date (exemple espagnol):

Correctement, l'entrée accepte le format espagnol %d/%m/%Y (Même en sélectionnant dans le calendrier, la date insère comme prévu). Mais quand je sauve le formulaire et le charge encore, la date montre dans le formulaire anglais: %Y-%m-%d

Le vrai problème est que quand je charge le formulaire pour changer n'importe quel autre champ de texte et essaye de le sauver j'obtiens une erreur indiquant moi pour entrer une date valide, donc je dois écrire toutes les dates à nouveau ou changer la langue dans le site pour utiliser l'admin.

Je n'ai rien spécifié pour DATE_INPUT_FORMATS dans les paramètres ni les formulaires ou les modèles substitués.

Sûrement je manque quelque chose mais je ne peux pas le trouver. Quelqu'un peut-il me donner un indice?

Répondre

2

L'ajout de ce à vos paramètres doivent résoudre la partie que vous appelez « le vrai problème »:

DATE_INPUT_FORMATS = ( 
    '%d/%m/%Y', '%d/%m/%y',  # '25/10/2006', '25/10/06' 
    '%Y-%m-%d', '%y-%m-%d',  # '2006-10-25', '06-10-25' 
) 

DATETIME_INPUT_FORMATS = (
    '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59' 
    '%d/%m/%Y %H:%M',  # '25/10/2006 14:30' 
    '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59' 
    '%d/%m/%y %H:%M',  # '25/10/06 14:30' 
    '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59' 
    '%Y-%m-%d %H:%M',  # '2006-10-25 14:30' 
    '%Y-%m-%d',    # '2006-10-25' 
) 

Mais il y a un problème avec Django. J'ai ouvert a ticket about the issue, mais vous devriez commenter, parce que votre exemple montre qu'il s'agit d'un problème encore plus sérieux que je le pensais (car il s'avère que toute localisation n'accepte pas les formats d'entrée de date "universel" et "localisé").

Mise à jour: J'ai oublié d'ajouter que vous pouvez passer localize=True à vos widgets de date, et ils sont censés afficher toujours les dates au format localisé. Il y a quelques exemples de comment faire cela dans this bug report.

Je viens de poster a message sur le problème de la liste de diffusion django-developers.

+0

Merci Ludwik J'ai suivi vos liens et maintenant j'ai une meilleure compréhension du problème. Vous m'avez sauvé beaucoup de temps à la recherche de mes propres erreurs. J'ai ajouté les formats aux paramètres mais j'obtiens toujours l'erreur de validation. Peut-être que je manque quelque chose d'autre mais je ne serai pas en mesure de vérifier jusqu'à lundi. Commentera encore alors. Je vous remercie. – equalium

+0

Il y a un correctif prétendant corriger ce problème: http://code.djangoproject.com/ticket/13621 Vous pouvez essayer de l'appliquer et ensuite commenter dans le bogue, en disant si cela a fonctionné pour vous. Cela aidera dans le processus de développement. BTW, si vous trouvez que ma réponse est utile, vous pouvez voter, ou même l'accepter. –

+0

En guise de solution de rechange, que se passerait-il si vous utilisiez simplement les formats de date dans le traducteur? Par exemple: 'DATE_FORMAT = _ ('m-d-Y')'? Cela fonctionnerait-il réellement? –

Questions connexes