python - 在python django中获取前几个月的数据
问题描述
嗨,我正在使用 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 月的数据,依此类推。
解决方案
我将从计算月份的开始日期和结束日期开始:
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
的s:
SignupMonthlyPoint.objects.filter(user=request.user,
timestamp__gt=one_month_ago,
timestamp__lt=month_end)
您可能必须timezone.make_aware()
在日期上使用来添加时区并使它们可以被 Django 识别
推荐阅读
- visual-studio-2019 - 如何在 Visual Studio 2019 上恢复正常的“新项目”窗口
- ios - 设置 UISlider 的最小值和最大值时出错
- asp.net-core - SelectPDF for .Net :DllNotFoundException: 无法加载 DLL 'libgdiplus': 找不到指定的模块
- azure-devops - Azure DevOps 与 Microsoft AppCenter
- react-native - 如何在单击气泡触摸时删除消息?React Native Gifted 聊天库
- angular - 调用 web 服务时出现问题,可能与 CORS 有关
- python - python中数据框的简单日志:错误:'type'对象不支持项目分配
- operators - 有没有办法对值进行分组,然后使用 RxJava 计算总和
- python - 与 Python Selenium 一起使用的 chromedriver 是否存储 cookie
- javascript - 当 URL 启动时,需要在静态 HTML 页面上启用一个按钮