Fazendo Django forms.DateField show usa formato de data local
Eu estou tentando encontrar uma maneira fácil de construir formulários que mostram datas no formato australiano (dd / mm / aaaa). Esta foi a única maneira que eu poderia encontrar para fazê-lo. Parece que deveria haver uma solução melhor.
Coisas para observar:
Criado um novo widget que renderiza o valor de data no formato dd / mm / aaaaCriado um novo campo de data para preceder a string de formato de data de localização à lista de valores que ele tenta usarEu imagino que a solução ideal seria um campo de data que localizasse automaticamente, mas isso não funcionou para mim (o strftime não parecia ser amigável com unicode, mas eu não tentei muito)
Estou esquecendo de algo? Existe uma solução mais elegante? Esta é uma abordagem robusta?
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()