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