问题描述
我有一个LogTable,每周大约有50万条记录。
models.py
class Log(models.Model):
timestamp= models.DateTimeField()
name = models.CharField(max_length=30)
status = models.PositiveIntegerField()
objects = LogManager()
我想按时间戳对条目进行分组,并获取每个时间戳每个状态的计数值。像这样:
timestamp | automated | offline | user | inactive
29.10.20 17:40 | 5 | 40 | 30 | 15
29.10.20 17:45 | 10 | ....
我曾与这样的经理一起尝试过:
class LogManager(models.Manager):
def auto(self,timestamp):
return self.filter(datetime__exact=timestamp).filter(status__exact=0).count()
def inactive(self,timestamp):
return self.filter(datetime__exact=timestamp).filter(status__exact=1).count()
def offline(self,timestamp):
return self.filter(datetime__exact=timestamp).filter(status__exact=2).count()
def user(self,timestamp):
return self.filter(datetime__exact=timestamp).filter(status__exact=3).count()
def activity(self,timestamp):
data = {
'timestamp': timestamp,'auto' : self.auto(timestamp),'inactive' : self.inactive(timestamp),'offline': self.offline(timestamp),'user': self.user(timestamp),}
return data
def activity_sum(self):
obj = self.values_list('datetime',flat=True)
data = {}
for i,time in enumerate(obj):
data[i] = self.activity(time)
return data
但这不是方法,因为如果我将计算结果持续约10分钟, 调用Log.objects.activity_sum()。我觉得这里有一个简单的答案,但我找不到。
感谢您的帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)