code: def _cumulative_by_date(model, datefield):
      '''
          Given a model and date field, generate monthly cumulative totals.
      '''
      monthly_counts = defaultdict(int)
      for obj in model.objects.all().order_by(datefield):
          datevalue = getattr(obj, datefield)
          monthkey = (datevalue.year, datevalue.month)
          monthly_counts[monthkey] += 1
  
      if len(monthly_counts) == 0:
          return []
  
      earliest_month = min(monthly_counts.iterkeys())
      latest_month = max(monthly_counts.iterkeys())
  
      accumulator = 0
      cumulative_counts = []
      for (year, month) in cycle_generator(cycle=(1, 12), begin=earliest_month, end=latest_month):
          mcount = monthly_counts.get((year, month), 0)
          accumulator += mcount
          cumulative_counts.append([datetime.date(year, month, 1), accumulator])
  
      return cumulative_countf _cumulative_by_date(model, datefield):
      '''
          Given a model and date field, generate monthly cumulative totals.
      '''
      monthly_counts = defaultdict(int)
      for obj in model.objects.all().order_by(datefield):
          datevalue = getattr(obj, datefield)
          monthkey = (datevalue.year, datevalue.month)
          monthly_counts[monthkey] += 1
  
      if len(monthly_counts) == 0:
          return []
  
      earliest_month = min(monthly_counts.iterkeys())
      latest_month = max(monthly_counts.iterkeys())
  
      accumulator = 0
      cumulative_counts = []
      for (year, month) in cycle_generator(cycle=(1, 12), begin=earliest_month, end=latest_month):
          mcount = monthly_counts.get((year, month), 0)
          accumulator += mcount
          cumulative_counts.append([datetime.date(year, month, 1), accumulator])
  
      return cumulative_counts
docs: Given a model and date field, generate monthly cumulative totals.