2009-08-16 8 views
1

im besoin d'utiliser un calendrier, im développer un site web pour la location de maison, mon premier projet web propre, donc, l'idée est que l'utilisateur choisissent une date initiale et la date de fin, dans le même mois ou mois (formulaire de janvier à avril par exemple), et dans la vue (modèle) de la disponibilité de la maison je veux montrer tous les mois (12) et où est occupé la maison malade montrer le jour avec une couleur différente ...Django, calendrier

im la recherche de calendrier django, tests im, mais si quelqu'un sait à ce sujet, s'il vous plaît me donner un coup de main :)

Merci :)

Répondre

2

Ici, il est un exemple de overiding HTMLCalendar pour afficher un 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

Alors, où cela est appelé à partir? Pas le modèle car il ne peut pas faire de code python. La vue? Pourrait être, mais tout ce formatage semble une mauvaise idée pour la vue. Un templatetag personnalisé que vous avez? Dans tous les cas, vous devriez savoir comment vous pensez que cela devrait être utilisé. – hughdbrown