オーストラリアの形式 (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()