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