python - Django的Count()
黄舟
黄舟 2017-04-17 17:38:32
[Python讨论组]

我现在知道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)
PHPz

问题解决了,没有用到Count(),用了extra

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

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

怪我咯

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

迷茫

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号