Just relax, take it easy..

0%

Django 子查询 (Subquery)

今天实现了一个难题,就是在 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')

最后的效果: