在python djang中获取前几个月的数据

2024-10-03 02:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我用的是django,我的模型是这样的

class SignupMonthlyPoint(models.Model):
    user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='SignupMonthlyPoints')
    timestamp = models.DateTimeField(auto_now_add=True)
    value = models.FloatField()

我得到了最近30天的数据

def get_signupfromlinkmonthlypoints():
    total_for_last_month =request.user.profile.SignupMonthlyPoint.filter(
    timestamp__gt=datetime.datetime.now() - relativedelta(months=1)
    ).aggregate(
    total=Sum('value')
    )['total']
    print(total_for_last_month)

但当我分析过去30天的数据时,不是上个月的数据。我想把整个8月份的数据做成9月份的最后一个月,然后是整个7月份的数据,以此类推


Tags: 数据django模型fordatetimevaluemodelsnow
1条回答
网友
1楼 · 发布于 2024-10-03 02:40:27

我先计算月份的开始和结束日期:

now = timezone.now()
one_month_ago = datetime.datetime(now.year, now.month - 1, 1)
month_end = datetime.datetime(now.year, now.month, 1) - datetime.timedelta(seconds=1)

然后得到相应的SignupMonthlyPoint

SignupMonthlyPoint.objects.filter(user=request.user,
                                  timestamp__gt=one_month_ago,
                                  timestamp__lt=month_end)

您可能需要在日期上使用timezone.make_aware()来添加时区,并使Django能够识别它们

相关问题 更多 >