Django聚合日期字段

6ss1mwsb  于 2023-01-06  发布在  Go
关注(0)|答案(1)|浏览(129)

嗨我有两个以下模型

class Store(models.Model):
   store_name = models.CharField(max_length=100)
  
   class Meta:
      db_table = 'stores'

class Sales(models.Model): 
    store =  models.ForeignKey(Store, on_delete=models.CASCADE, related_field='sales')
    product_id = models.BigInteger()
    sale_date = models.DateTimeField()
    total_mrp = models.FloatField()

我试图获取每家商店每天的总和(total_mrp),但似乎无法在我的销售表中按日期列分组
我使用的是django_rest_framework,我尝试使用以下序列化器来完成上面的操作

class SalesSerializer(serializers.RelatedField):
     queryset = Sales.objects.all()

     def to_representation(self, value):
         data = self.queryset.annotate(day=functions.ExtractWeekDay('sale_date'), total_sale=Sum('total_mrp'))
         return data.values('day', 'total_mrp')

class StoreSerializer(serializers.ModelSerializer):
      primary_sales = SalesSerializer(many=False)

     class Meta:
        model = Store
        exclude = ['id']

输出结果并没有像我期望的那样分组,相反,我得到了每个商店的主要销售额的相同数据。

31moq8wy

31moq8wy1#

第一个月
或者,如果您希望专门按一周中的某一天进行聚合
self.queryset.annotate(sale_day=functions.ExtractWeek('sale_date')).values('sale_day').annotate(total_sale=Sum('total_mrp'))
像这样的事情也许可以解决你的问题:)

相关问题