Estoy tratando de encontrar una forma sencilla de crear formularios que muestren fechas en el formato australiano (dd/mm/aaaa). Esta fue la única forma en que pude encontrar para hacerlo. Parece que debería haber una mejor solución.Creación de formularios Django.DateField show use formato de fecha local
A tener en cuenta:
- Creado Un nuevo widget que hace valor de fecha en el formato dd/mm/aaaa
- campo nueva fecha Creado para anteponer la cadena de fecha localizar formato de la lista de valores que intenta utilizar
imagino la solución ideal sería un datefield la que localiza automáticamente, pero que no funcionó para mí (strftime no parecía ser unicode amable, pero que no lo intenté muy duro)
¿Me falta algo? ¿Hay una solución más elegante? ¿Es este un enfoque robusto?
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()
Una alternativa simple es confiar en un widget de calendario de JavaScript para hacer la localización. Uno que usamos simplemente oculta mi campo de fecha y crea otro con el formato local especificado. – olivergeorge
¿Alguna información sobre widgets particulares y conectar un widget? – dfrankow
Supongo que debería consultar la pregunta sobre stackflow: http://stackoverflow.com/questions/114068/best-javascript-calendar-control. – dfrankow