我试图找到一种简单的方法来构建以澳大利亚格式(dd/mm/yyyy)显示日期的表单。这是我能找到的唯一方法。似乎应该有更好的解决方案。
注意事项:
- 创建了一个新的小部件,它以 dd/mm/yyyy 格式呈现日期值
- 创建了新的日期字段以将定位日期格式字符串添加到它尝试使用的值列表中
我想理想的解决方案是一个自动本地化的日期字段,但这对我不起作用(strftime 似乎对 unicode 不友好,但我没有很努力)
我错过了什么吗?有没有更优雅的解决方案?这是一种稳健的方法吗?
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()