gpt4 book ai didi

python - 根据 django 网站上的操作显示用户上个月的进度

转载 作者:行者123 更新时间:2023-12-01 00:37:07 27 4
gpt4 key购买 nike

我的数据库是这样设计的

user = models.ForeignKey(Profile, unique=True, on_delete=models.CASCADE)
signup = models.FloatField(default=10)
signup_from_user_link = models.FloatField(default=0)
post_review = models.FloatField(default=0)
total = models.FloatField(default=0)

我通过添加所有这些值来计算用户的总体进度。但现在我必须做出改变,我想展示上个月的进步。就像上个月每个字段中添加了多少用户一样。将上个月添加的值添加到这些字段中的最简单方法是什么。

任何帮助将不胜感激。谢谢

最佳答案

您可以创建一个模型来存储创建时间和事件的“值”(例如提交评论),每次用户执行操作时您都会创建此模型的一个实例

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

然后,您可以使用聚合对具有此查询的用户上个月的事件的所有值进行求和

total_for_last_month = user.actions.filter(
timestamp__gt=datetime.datetime.now() - dateutil.relativedelta(months=1)
).aggregate(
total=Sum('value')
)['total']

您可能希望将模型重命名为“Review”或其他名称,并且可能希望添加更多字段

如果您希望计算配置文件查询集的总数,则可以对每个查询集进行注释

users = Profile.objects.filter(
actions__timestamp__gt=datetime.datetime.now() - dateutil.relativedelta(months=1)
).annotate(
total=Sum('actions__value')
)

关于python - 根据 django 网站上的操作显示用户上个月的进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57648240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com