Группировка по неделям и добавление «недостающих» недель

В моей модели Django у меня есть очень простая модель, которая представляет единичное событие (например, возникновение предупреждения сервера):

class EventOccurrence:
    event = models.ForeignKey(Event)
    time = models.DateTimeField()

Моя конечная цель состоит в создании таблицы или графика, показывающего, сколько раз событие произошло за последние n недель.

Итак, мой вопрос состоит из двух частей:

  • Как мне group_by неделя из поля time ?
  • Как я могу "дополнить" результат этого group_by , чтобы добавить нулевое значение для любых недостающих недель?

Например, для второй части я хотел бы преобразовать результат следующим образом:

| week | count |                   | week | count |
| 2    | 3     |                   | 2    | 3     |
| 3    | 5     |   —— becomes —>   | 3    | 5     |
| 5    | 1     |                   | 4    | 0     |
                                   | 5    | 1     |

Как лучше всего сделать это в Джанго? Общие решения Python также подходят.

8
задан Sam Starling 26 February 2012 в 10:32
поделиться