Bei Django-Formularen.DateField-Show wird das lokale Datumsformat verwendet

Ich versuche einen einfachen Weg zu finden, um Formulare zu erstellen, die Daten im australischen Format anzeigen (TT / MM / JJJJ). Nur so konnte ich es schaffen. Es scheint, als gäbe es eine bessere Lösung.

Dinge zu beachten:

Erstellt ein neues Widget, das den Datumswert im Format TT / MM / JJJJ darstelltErstellt ein neues Datumsfeld, um die Zeichenfolge zum Auffinden des Datumsformats vor die Liste der Werte zu setzen, die verwendet werden sollen

Ich stelle mir vor, die ideale Lösung wäre ein Datumsfeld, das automatisch lokalisiert wird, aber das hat bei mir nicht funktioniert. (Strftime schien nicht Unicode-freundlich zu sein, aber ich habe mich nicht sehr bemüht.)

Vermisse ich etwas? Gibt es eine elegantere Lösung? Ist das ein robuster Ansatz?

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()

Antworten auf die Frage(4)

Ihre Antwort auf die Frage