Django Subquery(Django 子查询)

今天实现了一个难题,就是在Django中实现子查询。


今天碰到一个问题: 一个表叫做answers一个叫category。 answer中有个category的外键,用来对应answer是哪个category的。
我现在获得了所有的category,但是也想获得每个category的回答数.


如果用普通的sql语句可以这么写:

1
2
select id, name,(select count(*) from rango_answers a where a.category_id = b.id) as answer
from rango_category b order by answer desc;

但是在django中最后我是这么写的:

1
2
3
4
5
cats = Category.objects.filter(subject=subject).extra(
    select={
        'answer_count': 'select count(*) from rango_answers where rango_answers.category_id = rango_category.id'
    },
).order_by('-answer_count', '-likes', 'level')


最后的效果:


Comments(需翻墙)

-->