Python django聚合,用范围注释

Python django聚合,用范围注释,python,django,django-queryset,Python,Django,Django Queryset,我想了解2014年1月1日至1月31日期间售出的车型数量: 以下是我的疑问: class Sold(model.Model) product = models.ForeignKey(Product) model_name = models.ForeignKey(ProductModels) sold_date = models.DateField() model_qty = models.IntegerField()

我想了解2014年1月1日至1月31日期间售出的
车型数量

以下是我的疑问:

  class Sold(model.Model)
        product = models.ForeignKey(Product)
        model_name = models.ForeignKey(ProductModels)
        sold_date = models.DateField()
        model_qty = models.IntegerField()

      def __unicode__(self):
             return self.sold_date
我在打印时得到了
a['res']=12
,这很好

现在我使用的
range
如下:

  a = Sold.objects.filter().aggregate(res=Sum('model_qty'))

我得到了答案。是否有更好的方法编写此查询

您编写的查询在SQL中表示为

a = Sold.objects.filter(sold_date__range = ('2014-01-01' , '2014-01-31')).annotate(res=Sum('model_qty'))
a.aggregate(Sum('model_qty'))
从销售日期为“2014-01-01”和销售日期为“2014-01-31”的销售中选择金额(型号数量)
这已经尽可能地优化了(除非您可以进行一些特定于数据库的优化),因此您遇到的任何性能问题都很可能是由查询数量引起的


不过,我猜您实际上还没有对其进行分析,也没有使用实时数据运行查询来测试性能。我建议您在尝试过多优化代码之前(使用用于报告的调试工具栏)这样做。你很可能会发现瓶颈在别处。

你现在的做法有什么问题?我想知道这种方法是否昂贵。我可能得到了大量的数据,这就是为什么?谢谢你的澄清。
select sum(model_qty) from sold where sold_date > '2014-01-01' and sold_date < '2014-01-31'