Machen Django Formen.DateField-Karte verwenden lokale Datum-format

Ich versuche zu finden, eine einfache Möglichkeit zum erstellen von Formularen, die show-Termine in der australischen format (TT/mm/JJJJ). Dies war die einzige Möglichkeit, die ich finden konnte, es zu tun. Es scheint, wie es sollte eine bessere Lösung sein.

Dinge zu beachten:

  • Erstellt ein neues widget rendert Datum dd/mm/yyyy format
  • Erstellt neue date-Feld vorangestellt wird, die suchen Datumsformat-Zeichenfolge, um die Liste der Werte, die Sie versucht, zu verwenden

Stelle ich mir die ideale Lösung wäre eine datefield, die automatisch lokalisiert, aber das funktionierte nicht für mich (strftime nicht zu sein scheinen, unicode-freundlich, aber ich didn ' T versuchen sehr hart)

Bin ich etwas fehlt? Gibt es eine elegantere Lösung? Ist das ein robustes Konzept?

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()
  • Eine einfache alternative ist, sich an einem javascript-Kalender-widget zu tun, die Lokalisierung. Wir verwenden, versteckt sich einfach meine date-Feld und erstellt einen weiteren mit der lokalen Formatierung angegeben wurde.
  • Alle Informationen über bestimmte widgets und schließt ein widget?
  • Ich glaube, ich sollte siehe stackoverflow-Frage: stackoverflow.com/questions/114068/....
  • Meine Antwort unten bietet einen viel allgemeineren Ansatz als irreguläres format für das widget.
InformationsquelleAutor olivergeorge | 2009-09-21
Schreibe einen Kommentar