【问题标题】:Django rest with rawDjango 与 raw 休息
【发布时间】:2019-03-27 03:54:01
【问题描述】:

抱歉,我在使用 raw 时遇到问题,我正在尝试将每个月的总销售额相加,但出现了错误。 这是我的视线。

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 但又出现一个错误,如何我可以解决这个问题吗?

【问题讨论】:

  • 您提供的代码看起来可以正常工作。问题可能出在您未在此处粘贴的代码的其他部分。

标签: sql django postgresql django-rest-framework


【解决方案1】:

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

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 和模型

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2021-04-23
    • 2021-11-26
    • 1970-01-01
    • 2013-04-08
    相关资源
    最近更新 更多