Джанго: Подсчет объектов в конкретном месяце - PullRequest
2 голосов
/ 04 сентября 2010

У меня есть эта модель:

class Person(models.Model):
   city = models.CharField(max_length=20, blank=True)
   added_date = models.DateField(default=datetime.date.today)

Я хочу создать шаблон / представление с таблицей месяцев и количеством людей, добавленных в этом месяце (то есть 5 в январе, 10 в феврале, 8 марта и т. Д.). У меня есть похожая таблица для всех людей из каждого города, используя:

cities = Patient.objects.values('city').annotate(city_count=Count('city')).order_by('-city_count')

Я не знаю, как это сделать для моего месячного стола. Я мог бы отфильтровать за определенный месяц, а затем сосчитать все. Но тогда мне нужно было бы проходить этот цикл каждый месяц, что было бы многократным обращением к базе данных. Я не хочу этого делать.

Есть ли способ сделать это без написания sql и просто с помощью API django?

1 Ответ

0 голосов
/ 04 сентября 2010

Тот факт, что большинство БД имеют такой идеальный способ сделать это с запросом GROUP BY, не имеющим аналогов в Django AFAIK, побудил меня перейти к SQL для этого. Я выполнил поиск в Google по запросу "django sql" и обнаружил этот пост Дуга Хеллмана именно по этой проблеме: http://blog.doughellmann.com/2007/12/using-raw-sql-in-django.html. Я бы использовал это в качестве отправной точки для подсчета количества ваших месяцев в Django.

...