Django与原始休息

时间:2018-10-23 02:00:16

标签: sql django postgresql django-rest-framework

对不起,我的原始数据有问题,我试图将每个月的总销售额相加,但是出现错误。 这是我的视野。

class TotalSale(ListAPIView):
      serializer_class = TotalSaleSerealizer
      def get_queryset(self):
          queryset = Sale.objects.raw("SELECT 1 id, SUM(totalprice), 
          to_char(datesale,'yyyy-MM') FROM sales_sale group by 
          to_char(datesale,'yyyy-MM')")
          return queryset

我正在使用to_char更改日期格式,因此我可以计算每个月的销售额,当我直接在Postgresql中执行此查询时效果很好,但是在django中执行时,我不投票正确的数据。

1,'1197','2018-10'
1,'612','2018-09'
1,'1956','2018-08'

没关系,我可以计算每个月的销售额之和 但是,当我在Django中执行此操作时,这就会浮现出来。

{
    "id": 1,
    "totalprice": 144,
    "datesale": "2018-08-06"
},
{
    "id": 1,
    "totalprice": 144,
    "datesale": "2018-08-06"
},
{
    "id": 1,
    "totalprice": 144,
    "datesale": "2018-08-06"
}

我认为错误是针对1 id的,只是过滤具有id 1的数据的数据,我的问题是为什么会发生这种情况,如何解决它尝试删除1 id但又出现了另一个错误,如何我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我认为其余的都是无关紧要的,因为视图是最重要的,但是这里是其余的代码。

class TotalSaleSerealizer(ModelSerializer):
      class Meta:
            model = Sale
            fields = ('id','totalprice', 'datesale')


class Sale(models.Model):
    id_customer = models.ForeignKey(Customer, null =False, blank=False, 
    on_delete=models.CASCADE)
    id_user = models.ForeignKey(User, null =False, blank=False, 
    on_delete=models.CASCADE)
    datesale = models.DateField(auto_now_add=True)
    totalprice = models.IntegerField()

这些是serealizer和模型