python - Django的Count()
本文介绍了python - Django的Count()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我现在知道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的产品数量应该怎么做呢?谢谢指教!
解决方案
问题解决了,没有用到Count(),用了extra
Cate.objects.extra(select={'num_pro': 'select count(*) from appname_product where isnew=True'})
但是这样写总感觉不舒服,而且文档里也说由于手写sql不容易保障在不同数据库之间保证兼容所以应该尽量少用这个extra,希望能找到比这更好的办法。
这篇关于python - Django的Count()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文