オーストラリアの形式(dd/mm/yyyy)で日付を表示するフォームを簡単に作成しようとしています。これが私がそれをするために見つけることができる唯一の方法でした。よりよい解決策があるはずです。注意すべきDjangoフォームを作成する.DateField showローカル日付形式を使用する
物事:それはしようとする値のリストに見つけ日付書式文字列を付加するために、新しい日付フィールドを作成し
を使用するために、私は理想的なソリューションは、自動的にローカライズされたが、それが私のために動作しませんでしたDateFieldのだろうと想像
012(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()
1つの簡単な方法は、ローカライゼーションを行うためにJavaScriptのカレンダーウィジェットを使用することです。私たちが使用するのは、単に日付フィールドを隠し、ローカルフォーマットを指定して別のフィールドを作成するだけです。 – olivergeorge
特定のウィジェットに関する情報とウィジェットの接続 – dfrankow
私はstackoverflowの質問を参照する必要があります:http://stackoverflow.com/questions/114068/best-javascript-calendar-control。 – dfrankow