Prise de Django formes.DateField l'usage local format de la date

J'essaie de trouver un moyen facile de construire des formes qui montrent les dates en australie format (jj/mm/aaaa). C'était le seul moyen que j'ai pu trouver pour le faire. Il semble qu'il devrait y avoir une meilleure solution.

Choses à noter:

  • Créé un nouveau widget qui la rend à la valeur de date sous la forme jj/mm/aaaa
  • Créé de nouveaux champ de date à ajouter à la localiser chaîne de format de date à la liste des valeurs qu'il tente d'utiliser

J'imagine que la solution idéale serait d'avoir un datefield automatiquement localisé mais cela ne fonctionne pas pour moi (strftime ne semblent pas être en unicode sympa, mais je n'ai pas essayé très dur)

Suis-je raté quelque chose? Est-il une solution plus élégante? Est-ce une approche robuste?

from models import *
from django import forms
import datetime

class MyDateWidget(forms.TextInput):

    def render(self, name, value, attrs=None):

            if isinstance(value, datetime.date):
                    value=value.strftime("%d/%m/%Y")

            return super(MyDateWidget, self).render(name, value, attrs)


class MyDateField(forms.DateField):

    widget = MyDateWidget

    def __init__(self, *args, **kwargs):
            super(MyDateField, self).__init__(*args, **kwargs)
            self.input_formats = ("%d/%m/%Y",)+(self.input_formats)


class ExampleForm(ModelForm):
    class Meta: 
            model=MyModel
            fields=('name', 'date_of_birth')

    date_of_birth = MyDateField()
Une alternative simple est de s'appuyer sur un javascript widget de calendrier pour faire de la localisation. Celui que nous utilisons simplement le cache de mon champ de date et crée un autre avec le formatage local spécifié.
Aucune info particulière sur les widgets et de brancher un widget?
Je suppose que je devrais reportez-vous à la stackoverflow question: stackoverflow.com/questions/114068/....
Ma réponse ci-dessous fournit une vue beaucoup plus généralisée de l'approche de remplacer le format du widget.

OriginalL'auteur olivergeorge | 2009-09-21