2009-08-16 9 views
1

imはカレンダーを使用する必要があります。私は自宅のレンタル用のWebサイトを開発しています。私の最初のWebプロジェクトですので、ユーザーは同じ月の任意の月の最初の日付と終了日を選択します(1月から4月にかけての例)、家の空き状況を見る(テンプレート)には、すべての月(12)を表示したいと思います。イムは、Djangoのカレンダー、IMのテストを探しますが、誰かがそれについて知っていれば、私の手を与えてください:)Django、Calendar

感謝:)

答えて

2

ここでは、クエリセットを表示するためにHTMLCalendarをoveridingの例です。

class QuerysetCalendar(HTMLCalendar): 

    def __init__(self, queryset, field): 
     self.field = field 
     super(QuerysetCalendar, self).__init__() 
     self.queryset_by_date = self.group_by_day(queryset) 

    def formatday(self, day, weekday): 
     if day != 0: 
      cssclass = self.cssclasses[weekday] 
      if date.today() == date(self.year, self.month, day): 
       cssclass += ' today' 
      if day in self.queryset_by_date: 
       cssclass += ' filled' 
       body = ['<ul>'] 

       for item in self.queryset_by_date[day]: 
        body.append('<li>') 
        body.append('<a href="%s">' % item.get_absolute_url()) 
        body.append(esc(item)) 
        body.append('</a></li>') 
       body.append('</ul>') 
       return self.day_cell(cssclass, '%d %s' % (day, ''.join(body))) 
      return self.day_cell(cssclass, day) 
     return self.day_cell('noday', ' ') 


    def formatmonth(self, year, month): 
     self.year, self.month = year, month 
     return super(QuerysetCalendar, self).formatmonth(year, month) 

    def group_by_day(self, queryset): 
     field = lambda item: getattr(item, self.field).day 
     return dict(
      [(day, list(items)) for day, items in groupby(queryset, field)] 
     ) 

    def day_cell(self, cssclass, body): 
     return '<td class="%s">%s</td>' % (cssclass, body) 
+3

そこでここでは、これはから呼び出されますか?テンプレートではないので、Pythonコードを行うことはできません。景色?可能性がありますが、このフォーマットはすべてビューのために悪い考えです。あなたが持っているカスタムテンプレートタグ? いずれにしても、これをどのように使用するべきかを明確にする必要があります。 – hughdbrown