2009-08-16 4 views
1

им нужно использовать календарь, im разрабатывая веб-сайт для аренды дома, мой первый собственный веб-проект, поэтому идея заключается в том, что пользователь выбирает начальную дату и дату окончания в том же месяце или в любом месяце (пример с января по апрель), а в представлении (шаблоне) о доступности дома я хочу показать все месяцы (12) и где занят дом, плохо показывающий день с каким-то другим цветом ...Django, calendar

им в поисках календаря Джанго, тестирование им, но если кто-нибудь знает об этом, пожалуйста, дайте мне руку :)

спасибо :)

ответ

2

Вот он пример overiding HTMLCalendar для отображения QuerySet:

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. Вид? Может быть, но все это форматирование кажется плохой идеей для представления. Пользовательский templatetag у вас есть? В любом случае вам должно быть ясно, как вы думаете, что это должно использоваться. – hughdbrown

Смежные вопросы