protocalendar用のウィジェット

日付を簡単に入力したかったのでprotocalendar.js用のウィジェットを作ってみた。

こんだけ。今のところprotocalendarのオプションは何も設定できない。

# widgets.py
from django import newforms as forms

class CalendarWidget(forms.TextInput):
  def render(self, name, value, attrs=None):
    return super(CalendarWidget, self).render(name, value, attrs) + """
      <script type="text/javascript">
         InputCalendar.createOnLoaded('%s');
      </script>
    """ % attrs['id']

使い方はこう。

import time
import widgets
class YourForm(djangoforms.ModelForm):
  class Meta:
    model = models.YourModel
  date = forms.CharField(widget=widgets.CalendarWidget, initial=time.strftime('%m/%d/%Y'))

現在日付を初期値にする必要がないならimport timeとinitialオプションはいらない。