1
我一直在努力寻找一种利用django的ORM进行日期范围分组的好方法。我有一个用户拥有一个出生日期字段,我想要将所有在10-15岁,15-20岁等范围内的用户分组,然后返回组和总数那个年龄段的人。Django ORM按出生日期分组
我的模型:
class Reader(models.Model):
user = models.OneToOneField(User)
birth_date = models.DateField()
我原始的SQL是这样的:
SELECT count(*) as total,
CASE
WHEN EXTRACT(year from AGE(NOW(), birth_date)) <= 10 THEN '1-10'
WHEN EXTRACT(year from AGE(NOW(), birth_date)) <= 15 THEN '11-15'
WHEN EXTRACT(year from AGE(NOW(), birth_date)) <= 20 THEN '16-20'
WHEN EXTRACT(year from AGE(NOW(), birth_date)) <= 25 THEN '21-25'
WHEN EXTRACT(year from AGE(NOW(), birth_date)) <= 30 THEN '26-30'
WHEN EXTRACT(year from AGE(NOW(), birth_date)) <= 40 THEN '31-40'
WHEN EXTRACT(year from AGE(NOW(), birth_date)) <= 50 THEN '41-50'
WHEN EXTRACT(year from AGE(NOW(), birth_date)) <= 60 THEN '51-60'
WHEN EXTRACT(year from AGE(NOW(), birth_date)) > 60 THEN '60+'
END as age
FROM main_reader AS reader
GROUP BY age