为了账号安全,请及时绑定邮箱和手机立即绑定

Django的Count()

Django的Count()

慕的地6264312 2018-07-17 17:29:57
我现在知道Django.db.models.Count()可以根据所给的关联字段返回被关联 model 的数量,那么它可不可以返回被关联model中符合某种条件的数量呢?比如class Cate(model.Model):    name = models.CharField();class Product(model.Model):    cate = models.ForeignKey(Cate);    isnew = models.BooleanField();    查询所有分类的同时返回分类下的产品数量可以:Cate.objects.annotate(num_pro=Count('cate'))但是如果要查询所有分类下产品isnew为true的产品数量应该怎么做呢?谢谢指教!
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

方法比较low,试试是否可以。Product.objects.filter(cate__in = Cate.objects.filter(product__isnew=True).distinct())

查看完整回答
反对 回复 2018-07-20
?
ITMISS

TA贡献1871条经验 获得超8个赞

更low的方法,不用count,用len()。。。

查看完整回答
反对 回复 2018-07-20
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

用extra

Cate.objects.extra(select={'num_pro': 'select count(*) from appname_product where isnew=True'})

但是这样写总感觉不舒服,而且文档里也说由于手写sql不容易保障在不同数据库之间保证兼容所以应该尽量少用这个extra,希望能找到比这更好的办法。


查看完整回答
反对 回复 2018-07-20
  • 3 回答
  • 0 关注
  • 4668 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信