Tworzenie Django form.DateField pokazuje użycie lokalnego formatu daty
Próbuję znaleźć łatwy sposób na tworzenie formularzy, które pokazują daty w formacie australijskim (dd / mm / rrrr). To był jedyny sposób, żeby to zrobić. Wygląda na to, że powinno być lepsze rozwiązanie.
Rzeczy do odnotowania:
Utworzono nowy widget, który wyświetla wartość daty w formacie dd / mm / rrrrUtworzono nowe pole daty, aby dodać ciąg formatu daty lokalizacji do listy wartości, które próbuje użyćWyobrażam sobie, że idealnym rozwiązaniem byłoby pole daty, które automatycznie się zlokalizowało, ale dla mnie nie zadziałało (strftime nie wydawał się być przyjazny dla Unicode, ale nie bardzo się starałem)
Czy czegoś mi brakuje? Czy istnieje bardziej eleganckie rozwiązanie? Czy to solidne podejście?
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()