我试图用djangos orm执行一个查询,它返回一个部分在某个时间段内使用了多少个许可证。 我使用django1.8.3、python2.7.6和mysql作为数据库。在
我的查询与此类似:
beg = datetime.date(2015, 9, 1)
end = datetime.date(2015, 9, 9)
LicenseUsage.objects.all().filter(datestamp__range=[beg, end])\
.values('datestamp')\
.filter(groupid__in=[301, 274, 155, 186])\
.filter(poolid=301)\
.annotate(used=Sum('usedamount'))\
.order_by('datestamp')
结果包含datestamp和usedamount
^{pr2}$我的问题是,如果某个分区在某一天没有使用许可证,我的查询不会返回任何内容。 i、 e.6号。2015年9月在我的成绩。在
我想执行一个查询
[{'datestamp': datetime.date(2015, 9, 1), 'used': 2},
{'datestamp': datetime.date(2015, 9, 2), 'used': 1},
{'datestamp': datetime.date(2015, 9, 3), 'used': 2},
{'datestamp': datetime.date(2015, 9, 4), 'used': 2},
{'datestamp': datetime.date(2015, 9, 5), 'used': 1},
{'datestamp': datetime.date(2015, 9, 6), 'used': 0}, # <--- This is what i want
{'datestamp': datetime.date(2015, 9, 7), 'used': 2},
{'datestamp': datetime.date(2015, 9, 8), 'used': 2},
{'datestamp': datetime.date(2015, 9, 9), 'used': 1}])
我试着联合起来
LicenseUsage.objects.all().filter(datestamp__range=[beg, end])\
.values('datestamp')\
.filter(groupid__in=[301, 274, 155, 186])\
.filter(poolid=301)\
.annotate(used=Coalesce(Sum('usedamount'), V(0)))\
.order_by('datestamp')
但结果是一样的,看来我没弄好。 有人知道djangos orm是否可以进行这种查询,如果可能,如何解决它? 谢谢你的帮助,因为我快疯了。在
提前谢谢。在
比格斯
目前没有回答
相关问题 更多 >
编程相关推荐